Generating catalog-item recommendations based on social graph data

ABSTRACT

In one embodiment, a method includes sending instructions for presenting one or more recommended vendors to a client system associated with a first user via an application associated with a computing system, wherein the one or more recommended vendors are selected based on location data and user data associated with the first user, receiving a user selection of a recommended vendor from the one or more recommended vendors from the client system via the application, sending instructions for presenting an ordering interface comprising one or more catalog items and one or more delivery options to the client system via the application, receiving a user selection of one or more of the catalog items and one of the delivery options from the client system via the application, and sending an order based on the user selected catalog items and delivery option to a third-party system associated with the user selected vendor.

PRIORITY

This application is a continuation under 35 U.S.C. § 120 of U.S. PatentApplication No. 17/010,173, filed 2 Sep. 2020, which is a continuationunder 35 U.S.C. § 120 of U.S. patent application Ser. No. 15/862,398,filed 4 Jan. 2018, each of which is incorporated herein by reference.

TECHNICAL FIELD

This disclosure generally relates to identifying and recommendingcontent objects based on social-networking information.

BACKGROUND

A social-networking system, which may include a social-networkingwebsite, may enable its users (such as persons or organizations) tointeract with it and with each other through it. The social-networkingsystem may, with input from a user, create and store in thesocial-networking system a user profile associated with the user. Theuser profile may include demographic information, communication-channelinformation, and information on personal interests of the user. Thesocial-networking system may also, with input from a user, create andstore a record of relationships of the user with other users of thesocial-networking system, as well as provide services (e.g., wall posts,photo-sharing, event organization, messaging, games, or advertisements)to facilitate social interaction between or among users.

The social-networking system may send over one or more networks contentor messages related to its services to a mobile or other computingdevice of a user. A user may also install software applications on amobile or other computing device of the user for accessing a userprofile of the user and other data within the social-networking system.The social-networking system may generate a personalized set of contentobjects to display to a user, such as a newsfeed of aggregated storiesof other users connected to the user.

A mobile computing device—such as a smartphone, tablet computer, orlaptop computer—may include functionality for determining its location,direction, or orientation, such as a GPS receiver, compass, gyroscope,or accelerometer. Such a device may also include functionality forwireless communication, such as BLUETOOTH communication, near-fieldcommunication (NFC), or infrared (IR) communication or communicationwith a wireless local area networks (WLANs) or cellular-telephonenetwork. Such a device may also include one or more cameras, scanners,touchscreens, microphones, or speakers. Mobile computing devices mayalso execute software applications, such as games, web browsers, orsocial-networking applications. With social-networking applications,users may connect, communicate, and share information with other usersin their social networks.

SUMMARY OF PARTICULAR EMBODIMENTS

In particular embodiments, a social-networking system may send order anddelivery recommendations to a user based on the user's social-networkinginformation and metadata items associated with catalog items fromthird-party vendors. As an example, a user may wish to order foodthrough the online social network and have it delivered to her house.The user may input order parameters, such as her desired cost, her foodpreferences, her desired amount of wait time, or any other suitableparameter. Additionally or in the alternative, the social-networkingsystem may access a social graph to determine the user's preferences.For example, the user may have liked three posts about Mexican food: arecipe for 7 layer bean dip, a post from a friend about her meal at alocal taqueria, and a video about why corn tortillas are better thanflour tortillas. From this, the social-networking system may estimatethe user's affinity for Mexican food. The social-networking system mayperform similar analyses for other food types, other restaurants, or anyother suitable entity or concept on the online social network togenerate a user-preference vector for the user. The social-networkingsystem may also access metadata associated with catalog items fromthird-party vendors to generate catalog-item vectors for severaldifferent catalog items. The social-networking system may then identifyor generate recommendations based on the similarity between theuser-preference vector and the catalog-item vectors. Thesocial-networking system may send the recommendations to the user'sclient system for display.

The embodiments disclosed herein are only examples, and the scope ofthis disclosure is not limited to them. Particular embodiments mayinclude all, some, or none of the components, elements, features,functions, operations, or steps of the embodiments disclosed above.Embodiments according to the invention are in particular disclosed inthe attached claims directed to a method, a storage medium, a system anda computer program product, wherein any feature mentioned in one claimcategory, e.g. method, can be claimed in another claim category, e.g.system, as well. The dependencies or references back in the attachedclaims are chosen for formal reasons only. However any subject matterresulting from a deliberate reference back to any previous claims (inparticular multiple dependencies) can be claimed as well, so that anycombination of claims and the features thereof are disclosed and can beclaimed regardless of the dependencies chosen in the attached claims.The subject-matter which can be claimed comprises not only thecombinations of features as set out in the attached claims but also anyother combination of features in the claims, wherein each featurementioned in the claims can be combined with any other feature orcombination of other features in the claims. Furthermore, any of theembodiments and features described or depicted herein can be claimed ina separate claim and/or in any combination with any embodiment orfeature described or depicted herein or with any of the features of theattached claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an example user interface for providing arecommendation to a user.

FIG. 2 illustrates another example user interface for providing arecommendation to a user.

FIG. 3 illustrates an example block diagram for providing arecommendation to a user.

FIG. 4 illustrates an example view of a vector space.

FIG. 5 illustrates an example method for recommending catalog items to auser of an online social network.

FIG. 6 illustrates an example vendor selection interface.

FIG. 7 illustrates an example catalog-type selection interface.

FIG. 8 illustrates another example vendor-selection interface.

FIG. 9 illustrates an example vendor interface.

FIG. 10 illustrates an example order delivery selection interface.

FIG. 11 illustrates an example catalog order interface.

FIG. 12 illustrates an example catalog order interface.

FIG. 13 illustrates an example method for recommending catalog items toa user of an online social network.

FIG. 14 illustrates an example method for determining to send a selectedprompt to a user of the online social network.

FIG. 15 illustrates an example method for sending prompts to invite auser to perform an action with regard to an entity.

FIG. 16 illustrates an example method for sending recommendations forone or more food-service providers to a client system of a user of anonline social network

FIG. 17 illustrates an example network environment associated with asocial-networking system.

FIG. 18 illustrates an example social graph.

FIG. 19 illustrates an example computer system.

DESCRIPTION OF EXAMPLE EMBODIMENTS

Particular embodiments may provide for a social-networking system thatsends recommendations to a user based on the user's location, anavailable catalog from a nearby vendor, and social graph informationrelated to the user. As an example and not by way of limitation, a usermay enter a restaurant that serves Mexican food. The restaurant may havea long line until the user may order at the counter or a long wait untilthe user may be seated at a table. If the user has location-servicesenabled on her client device, the social-networking system may receivelocation data associated with the client device and determine that theuser is inside the Mexican restaurant. The social-networking system mayprovide recommendations to the user based on information stored inassociation with her social graph. Such information may include pastorders, photos posted by the user, photos that the user has interactedwith (e.g., liked, commented on, shared), or any other suitableinformation stored in association with the social graph. As an exampleand not by way of limitation, the social-networking system may send theuser a recommendation to “skip the line” and order menu items from theMexican restaurant through an online service (e.g., a website or anapplication) associated with either the social-networking system or theMexican restaurant. The social-networking system may also recommendparticular menu items that the user might enjoy.

In particular embodiments, the social-networking system may receive anindication that a user has posted a content object or interacted with acontent object on the online social network. As an example and not byway of limitation, the social-networking system may receive anindication that a user Alex has posted a photo of buffalo wings from therestaurant “Wings n' Rings” in the city that Alex lives in. Alex maycaption the photo as “Amazing wings! !” and also include a geographiclocation tag (e.g., “geotag”) of where the photo was taken, along withthe name of the restaurant: “Wings n' Rings.” In response to thisindication, the social-networking system may generate a node in a socialgraph that corresponds to buffalo wings generally, and in particularembodiments, may generate a node that corresponds to the particularbuffalo wings sold at Wings n' Rings. The social-networking system mayalso generate an edge connection between a user node corresponding toAlex and the node corresponding to the buffalo wings. This may enablethe social-networking system to determine that Alex has an affinity forbuffalo wings generally, and specifically for the buffalo wings sold atWings n' Rings.

In particular embodiments, the social-networking system may generate oneor more nodes based on received information from a third-party entity.The third-party may be any suitable entity, such as a restaurant,amusement park, shopping mall, department store, school or university,private company, or public company. The third-party entity may maintainonline information related to itself or the services and products thatit offers. As an example and not by way of limitation, a restaurant maymaintain a menu with various menu items. As another example and not byway of limitation, a shopping mall may maintain as list of stores andproducts offered within those stores. As another example and not by wayof limitation, a university may maintain a list of classes or otheracademic services. The social-networking system may receive or otherwiseaccess the information from the third party and identify content objectsfrom the information. The content objects may be any suitableinformation. As an example and not by way of limitation, thesocial-networking system may generate a content object for each menuitem of a particular restaurant. As another example and not by way oflimitation, the social-networking system may generate a content objectfor each store or product in a shopping mall. As another example and notby way of limitation, the social-networking system may generate acontent object for each class offered by a university. Thesocial-networking may create a node in the social graph that correspondsto each content object. Although this disclosure describes generating anode in a social graph in a particular manner, this disclosurecontemplates generating a node in a social graph in any suitable manner.

In particular embodiments, regardless of how the nodes are generated(e.g., in response to a content object posted on the online socialnetwork or in response to accessing information about a third-partyentity), when a user posts or interacts with a content object on theonline social network, the social-networking system may create an edgeconnection between the user node correspond to the user and the nodecorresponding to the content object. Posting or interacting with acontent object on the online social network may include any suitableaction, such as posting a photo, writing a status update, liking thecontent object, sharing the content object, or commenting on a postassociated with the content object. As an example and not by way oflimitation, if the user likes a photo of a double bacon cheeseburger,the social-networking system may generate an edge connection between theuser node corresponding to the user and the node corresponding to adouble bacon cheeseburger. The node corresponding to the double baconcheeseburger may be general, may correspond to a specific menu itemoffered by a particular restaurant, or may correspond to both doublebacon cheeseburgers generally and a specific menu item. In particularembodiments, the social-networking system may generate an edgeconnection between a user node and another node corresponding to acatalog item when the user orders the catalog item through the onlinesocial network. As an example and not by way of limitation, when a userorders a wet green burrito from a local taqueria through a mobileapplication associated with the social-networking system, thesocial-networking system may record this transaction and create an edgeconnection between the user node corresponding to the user and the nodecorresponding to the wet green burrito.

FIG. 1 illustrates an example user interface 100 for providing arecommendation 110 to a user. The user interface 100 may be alock-screen interface. This may be an interface that appears when theclient system is in a locked state. The social-networking system maysend a recommendation 110 in the form of a notification or message tothe client system of the user. The recommendation 110 may be anysuitable recommendation related to the user, the location that the useris in, an entity associated with the location the user is in, or anyother suitable information. As an example and not by way of limitation,a user may have entered a fast-food restaurant. The social-networkingsystem may determine that a user has entered a fast-food restaurant. Thedetermination may be made by any suitable means, including GPScoordinates, a beacon inside the restaurant that communicates with theuser's client system to determine if the user's client system is locatedwithin the building, or any other suitable method. The social-networkingsystem may determine that at this particular restaurant, customers orderat the counter after waiting in line. This information may be designatedby the restaurant itself or by one or more users of the restaurant. Thesocial-networking system may also determine that there is currently along wait-time based on third-party data or based on the current GPScoordinates for multiple client systems of multiple users of the onlinesocial networking system. The current GPS coordinates of these users mayindicate that they have been waiting in line for some time. Because ofthis, the social-networking system may determine that the user iswaiting in line at the fast food restaurant. In response, thesocial-networking system may determine a recommendation for the userthat says “Place tip. Skip the line and order with messenger.” Althoughthis disclosure uses a particular phrase for the recommendation 110,this disclosure contemplates any suitable phrase for recommendation 110.Examples of phrases include “In line at Burgerville? Skip the line byordering here,” “Try ordering a cheeseburger through the app!” or anyother suitable phrase that would invite the user to use a mobileordering module provided at least in part by the social-networkingsystem.

FIG. 2 illustrates another example user interface 200 for providing arecommendation 210 to a user. The user interface 200 may be an interfacethat appears when the user opens an application associated with theonline social network. Recommendation 210 may appear at the top of userinterface 200, or in any other suitable location on interface 200.Recommendation 210 may be a selectable icon that the user may tap orotherwise select to proceed to a mobile ordering interface (notillustrated). User interface 200 may function similarly to userinterface 100, except that it may appear within an applicationassociated with the online social network instead of as a messagenotification. The text of recommendation 210 may be any suitable text,including “At Burgerville? Skip the line and order here.” Alternativelyor in addition, the text of recommendation 210 or recommendation 110 mayinclude catalog items from the third-party entity associated with thelocation, that may be recommended to the user based on thesocial-networking information of the user. As an example and not by wayof limitation, the text of recommendation 210 may state, “Alex, at Wingsn' Rings? Try the spicy buffalo wings—order them by tapping here.” Ifthe user selects the recommendation 210, the social-networking systemmay send instructions to the user's client system to display a mobileordering interface. The mobile ordering interface may be generated andmaintained by the social-networking system or it may be generated andmaintained by a third-party entity. The social-networking system maybuild a platform that third-party entities may integrate with, so thatwhen a user selects to order an item from a particular entity, the usermay be presented with a website associated with the entity that isdisplayed in an i-frame in an application of the social-networkingsystem.

FIG. 3 illustrates an example method for providing a recommendation to auser. A recommendation engine 340 may make recommendations for a userbased on location data 310 associated with a client system of the user,catalog information 320, and user data 330. The catalog information 320may be provided by a third-party entity and may contain informationrelated to products or services that the entity offers to users. As anexample and not by way of limitation, the catalog information may be alist of menu items offered at Mexican Restaurant. Each item on the menumay have associated metadata. The menu-item metadata may include price,average rating, nutritional information (e.g., calories, sodium content,grams of fat, carbohydrates, protein, and sugar), the frequency withwhich that menu item is ordered (popularity), average amount of time ittakes that item to be prepared and served, or any other suitable metric.As an example and not by way of limitation, Mexican Restaurant may offerfive menu items that have the following metadata:

TABLE 1 Example Menu Items and Associated Metadata Name Price RatingCalories Carbs Fat Protein Burrito $15.99 4.3 710 79 32 35 Enchiladas$13.99 4.1 532 27 25 46 Nachos $9.99 3.7 346 36 10 7 Tacos $11.99 4.5611 52 21 29 Quesadilla $12.99 3.9 431 43 20 17

User data 330 may be gathered and maintained by the social-networkingsystem. User data 330 may include an order history and informationcontained in the social graph. In particular embodiments, the orderhistory may also be contained in the social graph. The order history mayinclude past purchases made by the user either through the onlinesocial-network or through a third-party, subject to privacy settings ofthe user or the third-party. The order history may also include pastfood orders made by the user one or more restaurants. As an example andnot by way of limitation, the user may have ordered the nachos fromMexican Restaurant four times in the past two months. This informationmay be stored by the social-networking system. The information containedin the social graph may be nodes and edges connecting to the nodes, asdiscussed above. The nodes may include a user node corresponding to theuser. The nodes may also include second nodes that correspond toentities, menu items, locations, or any other suitable thing. The secondnodes may be connected to the user node by edges. Each edge may have itsown edge type that represents a particular action the user has performedon the online social network. As an example and not by way oflimitation, a user may order tacos from Mexican Restaurant. The socialgraph may be updated to include an edge between the user node and asecond node corresponding to tacos from Mexican Restaurant. The edge mayhave an “ordered” edge-type. Further, if the user selects a “like” iconassociated with the tacos, another edge connection with a “liked”edge-type may be formed between the user node and the second nodecorresponding to the tacos. In particular embodiments, a single edge mayinclude data associated with all the actions the user has taken withrespect to the node connected by the edge to the user node.

In particular embodiments, determining one or more recommendations 350may be based on one or more weights that are each assigned to one of theone or more edges based on the respective edge-type. An edge may beassociated with an affinity coefficient, which may represent thestrength of a relationship between the user and the entity or conceptrepresented by the second node. In addition or as an alternative to whatis discussed elsewhere in this disclosure, the social-networking systemmay calculate the affinity coefficient by processing the user's actionson the online social network with respect to a particular entity orconcept. Each action may be associated with a particular weight that isused to factor the overall affinity coefficient. As an example and notby way of limitation, an affinity coefficient a for a particular edgemay be α=Ax+By+ . . . +Cz , where A, B, C represent particular actionsthe user has taken on the online social network with respect to aparticular entity or concept, and x, y, . . . z represent the weightsassociated with each action. As an example and not by way of limitation,A may represent ordering a menu item using an application of the onlinesocial network and may be weighted the heaviest. Thus x may be 0.75. Bmay represent posting content related to the menu item on the onlinesocial network, such as “this was the spiciest burrito!” and be weightedslightly less heavy than ordering the menu item. Thus y may be 0.50. Cmay represent liking or otherwise reacting positively to a contentobject associated with the menu item and may be weighted the less thanposting content. Thus z may be 0.25. Other actions may receive differentweights, such as sharing a content object related to a menu item,commenting on a post about a particular menu item, or any other suitableaction associated with the online social network. Each action A, B, . .. C (e.g., ordering, posting, liking, commenting, sharing) may beassigned a “1” or a “0” depending on whether or not the user hasperformed that action with respect to the particular menu item. Notethat in particular embodiments the affinity coefficient may exceed 1. Asan example and not by way of limitation, a user may order the nachosfrom Mexican Restaurant three times, post a photo of the nachos once,and like another friend's photo of the nachos once. Thus, the user'saffinity coefficient for nachos may beα=3Ax+By+Cz=3(1)(0.75)+(1)(0.5)+(1)(0.25)=3.0. This affinity coefficientmay be included in the user data 330 for this particular user. Likewise,affinity coefficients for any edge connection between a user node and asecond node may be included in the user data 330 for any suitable user.

The recommendation engine 340 may access location data 310 as describedherein, catalog information 320 as described herein, and user data 330as described herein to make a recommendation 350 for a particular user.The recommendation 350 may be made by ranking the catalog information320 based at least in part on the user data 330. In particularembodiments, the menu items may be ranked based on the affinitycoefficients between the user and each menu item. As an example and notby way of limitation, the social-networking system may access theaffinity coefficients between a user node and each item at MexicanRestaurant. The affinity coefficients may be as follows: burrito—1.25;enchiladas—3.5; nachos—1.00; tacos—2.75; quesadilla—0.50. Thus, therecommendations may be ranked in descending order based on therespective affinity coefficients. In particular embodiments, thesocial-networking system may consider other user data 330 and othercatalog information 320. The menu item metadata may be included in thecatalog information 320. As an example and not by way of limitation, theinformation included in Table 1 may be included in the cataloginformation 320. The recommendation engine 430 may make recommendationsbased on this metadata along with user data 330. As an example and notby way of limitation, the user may have specified that he is trying tolose weight, either by directly specifying this with relation to therecommendation engine (e.g., as part of an initial survey), or byposting or otherwise interacting with weight-loss related content to theonline social network (e.g., posting a photo of himself with the hashtag“weightloss”). If the social-networking system determines that the userhas specific dietary preferences (such as low-fat or high protein food),the social-networking system may uprank menu items that match the user'spreferences. As an example and not by way of limitation, thesocial-networking system may analyze the protein-to-carbs ratio for eachmenu item offered as shown in Table 1. Since the enchiladas have thehighest protein-to-carb ratio at 1.7, the social-networking system mayuprank the enchiladas based on this determination. The same analysis maybe applied to other food preferences or restrictions, such as foodallergies (e.g., downrank or remove recommendations that include glutenif the user has celiac disease), vegetarianism or veganism (e.g., removerecommendations that include meat), and any other suitable preference.

In particular embodiments, when recommendation engine 340 determinesrecommendations 350 for a first user, it may rank recommendations 350based on the social-networking activity of “lookalike” users withrespect to the first user. Lookalike users may be users that havesimilar attributes (e.g., social-networking traits) as the first user.In prior search engine systems, when processing a search query orperforming some other type of information retrieval (such as catalogitem recommendation) for a particular user, the search engine system mayrank the search results based on the relevance of the individual searchresult or catalog item to the query, but not necessarily the relevanceof the search result to the querying user. This may lead to usersperforming multiple queries or scroll through several catalog items tofind relevant results, consuming additional time and processingresources. By using lookalike user data, the social-networking systemmay base information retrieval on how other users that are similar tothe first user have interacted with content objects (e.g., menu items)at locations similar to where the first user is located. This mayprovide a more customized recommendation and catalog ordering experienceand may provide recommendations more efficiently and reduce therequisite processing power by reducing the number of catalog items theuser must look at before deciding to order a catalog item.

In particular embodiments, the recommendation engine 240 may baserecommendation 350 on lookalike data of one or more lookalike users withrespect to the first user. The first user may correspond to a firstuser-vector. One or more lookalike users may be selected from severalsecond users of the online social network. Each second user maycorrespond to a second-user vector. Each user-vector may be anN-dimensional vector representing the respective user in anN-dimensional vector space. Each dimension of the user-vector maycorrespond to a social-networking trait of the respective user. Eachsecond user may be selected based on a vector similarity between thefirst user-vector and the second-user vector corresponding to therespective second user.

The social-networking system may determine whether users A and B arelookalike users by representing each user as a user-vector having Ndimensions in an N-dimensional vector space. Each dimension in thevector space may correspond to a particular social-networking trait.After the social-networking system has generated user-vectors for two ormore users, it may measure the vector similarity (e.g., Hammingdistance, cosine similarity, Euclidean distance) between the twouser-vectors to determine if the users may be deemed to be lookalikeusers. A user may be considered a lookalike user with respect to thequerying user if, for example, the cosine similarity between theirrespective user-vectors is above a threshold similarity value. As anexample and not by way of limitation, a user a user Alex may be aMexican-American male, aged 24, who attends Stanford University, and whohas liked the Tim Duncan fan page, and has checked-in at Umami Burger inPalo Alto, Calif. Each of these pieces of information relating to Alex'ssocial-networking activity may be coded and become part of a user-vectorthat represents Alex. The social-networking system 160 may create auser-vector for Alex that may look something like, <2, 5, 0, 0, 3, −2>,where each value in the vector represents some trait (e.g., 2=male,5=age 21-25; −2=likes Tim Duncan). This user-vector may have more orfewer dimensions depending on the number of social-networking traitsconsidered when determining lookalikes and the amount of informationavailable to the social-networking system 160. If two users have avector similarity value above a threshold similarity value (e.g., acosine similarity greater than 0.7), they may be deemed to be lookalikeusers. Depending on the threshold, the querying user may have tens,hundreds, or thousands of lookalike users.

When the recommendation engine 340 determines that a first user iswithin a threshold proximity to a specified area (e.g., inside MexicanRestaurant), it may identify catalog items (e.g., menu items) offered bythe entity associated with the specified area. The recommendation engine340 may then access lookalike data. The lookalike data may be actionsthat other users who are lookalike users with respect to the first userhave taken on the online social network. Specifically, the lookalikedata may be actions those users have taken with respect to catalog itemsassociated with the entity in the specified area or with otherequivalent entities. As an example and not by way of limitation, therecommendation engine 340 may access lookalike data for users who haveeaten at Mexican Restaurant or other Mexican restaurants. The lookalikedata that is accessed may be an order history for each lookalike user.For example, a user may have ordered the cheese and chicken enchiladasseven times in the last three weeks. Additionally, the lookalike datamay reveal that several users have ordered the cheese and chickenenchiladas and have given that menu item an average rating of 4.4 out of5. Since it is likely that the first user may have similar foodpreferences as a lookalike user, the social-networking system mayrecommend the chicken enchiladas to the first user based on thelookalike data.

FIG. 4 illustrates an example view of a vector space. In particularembodiments, users may be represented as user-vectors in anN-dimensional vector space, wherein N denotes any suitable number ofdimensions. Although the vector space in FIG. 4 is illustrated as athree-dimensional space, this is for illustrative purposes only, as thevector space may be of any suitable dimension (e.g., 128 dimensions).Each user-vector may be mapped onto the vector space. As an example andnot by way of limitation, FIG. 4 illustrates four user-vectorsrepresenting user 1, user 2, user 3, and user 4. For discussionpurposes, user 1 may be considered to be the user that is receiving therecommendations of FIGS. 1 and 2. The social-networking system 160 mayidentify users that are lookalike users with respect to user 1 bymeasuring the similarity between the user-vector representing user 1 andthe user-vectors representing each of the other users, respectively.Similarity may be measured in a number of different ways, includingcosine similarity, Euclidean distance between the vector end-points, orany other suitable method. As an example and not by way of limitation,the angle between the user-vectors representing user 1 and user 2 inFIG. 4 may be θ₁₂. A threshold similarity may be determined, whereinuser 2 may be a lookalike user with respect to user 1 if the vectorsimilarity between their respective user-vectors is greater than thethreshold similarity. As an example and not by way of limitation, theangle θ₁₂ between the user-vectors representing user 1 and user 2 mayindicate that the vector similarity between the vectors is above thethreshold similarity. Thus, user 1 and user 2 may be lookalike users.The angle θ₁₃ between user 1 and user 3, on the other hand, may be suchthat their vector similarity does not meet the threshold similarity.Thus, user 3 may not be a lookalike user with respect to user 1. Thesame may be said of the angle θ₁₄ between user 1 and user 4. User 4 maynot be a lookalike user with respect to user 1 because the angle θ₁₄ istoo large. In particular embodiments, the social-networking system 160may consider the Euclidean distance d between the embeddings (i.e.,mappings or projections of the vectors in the N-dimensional vectorspace) of the user-vectors in addition to or in place of cosinesimilarity or other angle measurement similarity. In particularembodiments, for two users to be lookalike users, the angle θ betweentheir respective user vectors and the Euclidean distance d may both needto meet threshold values. As an example and not by way of limitation,for user 1 and user 2 to be lookalike users, the cosine similaritybetween their respective user-vectors must be greater than 0.8 (i.e.,angle θ₁₂ must be less than or equal to 37 degrees), and the Euclideandistance between the terminal points of the user-vectors representinguser 1 and user 2 must be below 5.0. A user may provide information tothe social-networking system 160 by updating a user profile associatedwith the user with information about the user (e.g., age, relationshipstatus, political views, interests, favorite movies, books, quotes andthe like), and by interacting with content objects on the online socialnetwork (e.g., liking user posts, commenting on photos, sharingarticles, posting status updates). Although this disclosure describesmeasuring the similarity between users in a particular manner, thisdisclosure contemplates measuring the similarity between users in anysuitable manner.

In particular embodiments, users may be represented as binaryuser-vectors, wherein each value in a particular dimension in anN-dimensional user-vector is a 1 or a 0. As an example and not by way oflimitation, a first binary user-vector for a user, Louie, may be<1,1,1,0,1,0,1,0>, and a second binary user-vector for another user,Quincy, may be <1,0,1,1,1,0,1,0>. These binary user-vectors mayrepresent any suitable information relating to users of the onlinesocial network, such as whether or not the user has liked particularcontent objects (e.g., posts, photos, profile pages). Thesocial-networking system 160 may calculate the similarity between Louieand Quincy by calculating the Hamming distance between the binaryuser-vectors for Louie and Quincy. The Hamming distance between twovectors of equal length may be the number of positions at which theircorresponding bits are different. In other words, it measures theminimum number of substitutions required to change the first vector tothe second vector. Thus, the difference between the binary-user vectorsthat represent Louie and Quincy may be 2, because two bits may need tobe changed in the first binary user-vector to obtain the second binaryuser-vector. If the threshold Hamming distance of two binaryuser-vectors to be sufficiently similar for two users to be lookalikeusers is 3 or under, Quincy and Louie may be lookalike users, becausethe Hamming distance between Louie and Quincy's binary user-vectors is2. Although this disclosure describes calculating the similarity betweenusers in a particular manner, this disclosure contemplates calculatingthe similarity between users in any suitable manner.

In particular embodiments, in addition or in the alternative to makingrecommendations for individual catalog items, the social-networkingsystem may recommend a family of complementary items to the user. As anexample and not by way of limitation, the social-networking system maycreate a personalized meal recommendation for the user. The user mayhave previously specified that he is currently on a Paleo diet. As aresult, the social-networking system may identify food items that arePaleo-friendly and recommend those items to the user. Thesocial-networking system may recommend the spinach chicken soup as anappetizer, the steak and asparagus plate as a main course, and the paleopumpkin pie for dessert. Although this disclosure describes recommendingcatalog items in a particular manner, this disclosure contemplatesrecommending catalog items in any suitable manner.

FIG. 5 illustrates an example method 500 for recommending catalog itemsto a user of an online social network. The method may begin at step 510,where the social-networking system may receive location data from aclient system of a user. At step 520, the social-networking system maydetermine that the user is located within proximity of a specified area.At step 530, the social-networking system may access catalog informationassociated with the specified area. At step 540, the social-networkingsystem may access a social graph comprising nodes and edges connectingthe nodes, wherein the nodes include a first node corresponding to theuser and several second nodes corresponding to a concept or an entity ofthe online social network. At step 550, the social-networking system maydetermine one or more recommendations for the user based on (1) one ormore edges between a first user node and one or more second nodes, and(2) the catalog information. At step 560, the social-networking systemmay send the recommendations to the client system for display.Particular embodiments may repeat one or more steps of the method ofFIG. 5, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 5 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 5 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method forrecommending catalog items to a user of an online social networkincluding the particular steps of the method of FIG. 5, this disclosurecontemplates any suitable method for recommending catalog items to auser of an online social network including any suitable steps, which mayinclude all, some, or none of the steps of the method of FIG. 5, whereappropriate. Furthermore, although this disclosure describes andillustrates particular components, devices, or systems carrying outparticular steps of the method of FIG. 5, this disclosure contemplatesany suitable combination of any suitable components, devices, or systemscarrying out any suitable steps of the method of FIG. 5.

FIG. 6 illustrates an example vendor selection interface. By way ofexample and not of limitation, the example vendor selection interfacedepicted in FIG. 6 may be a food ordering interface. This may be aninitial interface that a user may encounter when attempting to orderitems via an application associated with the online social network. Thevendor selection interface may include several references to vendors.The references may be categorized or ranked according to at least someof the embodiments disclosed herein. A user may select any of thesereferences to learn more about each vendor, or may select an icon thatsays “start order” to begin ordering items from that vendor. Thereferences may also include an indication that the vendor is currentlyclosed, if that is the case. The references may also include additionalinformation related to the vendor, such as hours of operation, averageuser rating, address, distance to the user, phone number, or any othersuitable information. Although this disclosure describes a particularvendor selection interface illustrated in a particular manner, thisdisclosure contemplates any suitable vendor selection interfaceillustrated in any suitable manner.

FIG. 7 illustrates an example catalog-type selection interface. Thecatalog-type selection interface depicted in FIG. 7 may be a food-typeselection interface. This interface may be displayed on the user'sclient system if the user scrolls down past the vendor-selectioninterface. The food-type selection interface may include several foodtypes (or “cuisines”) that the user may select from. As an example butnot by way of limitation, a user may not initially see any restaurantsthat interest her on the vendor-selection interface. Thus, she mayscroll down to select from the food-type selection interface and choosefrom the following food-types: Mexican, fast food, Chinese, delis,sandwiches, pizza, or any other suitable food type. The user may selectone of these food-types and may be presented with another interface thatincludes vendors of the selected food type. As an example and not by wayof limitation, the user may select “Mexican,” and the social-networkingsystem may send instructions to present on the client system anothervendor-selection interface, which is described with reference to FIG. 8.Although this disclosure describes a particular food-type selectioninterface illustrated in a particular manner, this disclosurecontemplates any suitable food-type selection interface illustrated inany suitable manner.

FIG. 8 illustrates another example vendor-selection interface. Thisinterface may be different from the vendor-selection interface depictedin FIG. 6 in that the vendor-selection interface of FIG. 8 may includereferences to vendors of a particular food-type, rather than referencesto vendors of multiple different food types. As an example and not byway of limitation, the vendor-selection interface of FIG. 8 may includereferences to Mexican restaurants. These references may be displayed inresponse to the user's selection of Mexican restaurants in the food-typeselection interface. References to the following vendors may bedisplayed Andria's Shopping, Lisa Shopping, and Vegas Squire. A user mayselect any of these references to learn more about each vendor, or mayselect an icon that says “start order” to begin ordering items from thatvendor. The references may also include an indication that the vendor iscurrently closed, if that is the case. The references may also includeadditional information related to the vendor, such as hours ofoperation, average user rating, address, distance to the user, phonenumber, or any other suitable information. Although this disclosuredescribes a particular vendor selection interface illustrated in aparticular manner, this disclosure contemplates any suitable vendorselection interface illustrated in any suitable manner.

FIG. 9 illustrates an example vendor interface. The vendor interfacedepicted in FIG. 9 may be for a food vendor. This particular food vendormay be the Mexican restaurant called Vegas Squire. The vendor interfacemay include a photo of the vendor, contact information of the vendor, anoption to email or message the vendor, social networking interactions,such as like, follow, recommend, or save the vendor. The vendorinterface may also include an average user rating, an indication ofwhether the vendor is currently open for business, and options to learnmore about the vendor, such as to see a menu, more photos of the vendorand food provided by the vendor, or any other suitable information.Although not illustrated in FIG. 9, the vendor interface may alsoinclude an icon that says “start order” to begin ordering items fromthat vendor. Although this disclosure describes a particular vendorinterface illustrated in a particular manner, this disclosurecontemplates any suitable vendor interface illustrated in any suitablemanner.

FIG. 10 illustrates an example order delivery selection interface. Ifthe user selects an the icon to start a food order, thesocial-networking system may send instructions to display two or morefood delivery options. As an example and not by way of limitation, auser may select a “start order” icon that is next to a reference to theFun Corner Cafe. The social-networking system may send instructions todisplay an order delivery selection interface that includes two optionsthrough which the order may be delivered: Food Street, or ShrubhubOutside Corner and Takeout. The user may select either one of theseoptions to begin the food order selection process. Although thisdisclosure describes a particular order delivery selection interfaceillustrated in a particular manner, this disclosure contemplates anysuitable order delivery selection interface illustrated in any suitablemanner.

FIGS. 11 and 12 illustrate an example catalog order interface. Thecatalog order interface depicted in FIG. 11 may be a food-orderinterface that is fulfilled by an order delivery system. The catalogorder interface depicted in FIG. 12 may be a food-order interface thatis fulfilled by the vendor itself. In this example, the vendor maymaintain its own mobile food-order delivery interface. When a userselects to order food through such an interface, the social-networkingsystem may send instructions to display the order interface through anI-frame in the application associated with the online social network. Itmay be from this interface that the user may place orders for catalogitems. In this example interface, the catalog items may be food items.The food order interface may include menu items that may be ranked bypopularity or may be ranked according to the methods discussed herein.The food order interface may also include past customer reviews that theuser may view to help make a determination of whether the user shouldorder food from the vendor. The menu items displayed in the food orderinterface may be customized for the user based on the user'ssocial-networking data, as discussed herein. Although this disclosuredescribes a particular catalog order interface illustrated in aparticular manner, this disclosure contemplates any suitable catalogorder interface illustrated in any suitable manner.

In particular embodiments, the social-networking system may send orderand delivery recommendations to a user based on the user'ssocial-networking information and metadata items associated with catalogitems from third-party vendors. As an example, a user may wish to orderfood through the online social network and have it delivered to herhouse. The user may input order parameters, such as her desired cost,her food preferences, her desired amount of wait time, or any othersuitable parameter. Additionally or in the alternative, thesocial-networking system may access a social graph to determine theuser's preferences. For example, the user may have liked three postsabout Mexican food: a recipe for 7 layer bean dip, a post from a friendabout her meal at a local taqueria, and a video about why corn tortillasare better than flour tortillas. From this, the social-networking systemmay estimate the user's affinity for Mexican food. The social-networkingsystem may perform similar analyses for other food types, otherrestaurants, or any other suitable entity or concept on the onlinesocial network to generate a user-preference vector for the user. Thesocial-networking system may also access metadata associated withcatalog items from third-party vendors to generate catalog-item vectorsfor several different catalog items. The social-networking system maythen identify or generate recommendations based on the similaritybetween the user-preference vector and the catalog-item vectors. Thesocial-networking system may send the recommendations to the user'sclient system for display.

In particular embodiments, the social-networking system may receiveorder parameters from a client system of a user. The order parametersmay include an identifier that identifies the user to thesocial-networking system and a location of the client system. The orderparameters may also include one or more preferences of the user asspecified by the user or as determined by the social-networking systembased on information in the social graph. The order parameters may bedetermined by analyzing edge connections and affinity scores between theuser node corresponding to the user and various catalog items. A catalogitem may qualify as an order parameter if the affinity coefficient isabove a threshold affinity coefficient. In particular embodiments,entire categories of catalog items may correspond to a concept node inthe social graph. The social-networking system may analyze the affinityscore between these concept nodes and the user node when determining theorder parameters. As an example and not by way of limitation, a conceptnode corresponding to “Mexican Food” may exist in the social graph.There may be an edge connection between the user node corresponding tothe user and the concept node corresponding to “Mexican Food.” The edgeconnection may be associated with an affinity score that is above athreshold. Thus, “Mexican food” may become an order parameter for theuser. Other order parameters may be other food types (e.g., Chinese,Thai, vegetarian, vegan, gluten free, paleo, organic, locally sourced),total cost, delivery time, average user rating, nutritional information,distance from user, or any other suitable parameter. These orderparameters may be specified by the user or may be determined frominformation in the social graph, as explained herein.

In particular embodiments, the social-networking system may generate auser-preference vector for each user. The user-preference vector mayhave N dimensions. Each dimension may correspond to a preference of theuser. As an example and not by way of limitation, a user-preferencevector may have 17 dimensions, as shown by Table 2 below:

Dimension Type User Preference Mexican 1 Fast Food 1 Chinese 1 Delis 0Sandwiches 0 Pizza 1 Italian 0 Tex Mex 0 Thai 0 $ 1 $$ 1 $$$ 0 Deliveryin under 60 minutes 1 Vegetarian 0 Paleo 0 Gluten-Free 0 Average userrating above 3.5 1

The user-preference vector may be regularly updated to track thechanging preferences of the user. Updates to the user-preference vectormay be based on updates to the social graph with regard to the user. Theuser-preference vector may be individualized for each user based ondirect input from the user (e.g., the user specifies that she likesMexican food, does not like deli food, etc.), or based on onlinesocial-networking activity of the user. As an example and not by way oflimitation, a user may order food from a Chinese restaurant via theonline social network. The user may rate the food with the app, or maypost content to the online social network that says something positiveabout the food. For example, the user may post a photo of the food andsay, “Just got take-out from Fortune Cookie, my favorite Chineserestaurant.” This may inform the social-networking system that the userlikes Chinese food. In particular embodiments, a positive post such asthis may be enough for the social-networking system to determine thatthe user likes Chinese food and thus enter a “1” in that vector space.In particular embodiments, the social-networking system may create anode in the social graph that corresponds to each food type. When theuser posts something positive about a particular food type, thesocial-networking system may generate an edge between that user's usernode and the concept node corresponding to that food type. Each onlinesocial-networking interaction the user has with that food type maymodify the affinity coefficient between that user's user node and theconcept node corresponding to that food type. If the user has not hadany interaction with a particular food type, the respective affinitycoefficient may be zero. Once the affinity coefficient increases past athreshold affinity, the social-networking system may determine that theuser likes that food type and thus may enter a “1” in the vector spacefor that food type. As an example and not by way of limitation, a usermay initially have an affinity coefficient of zero for Tex Mex. Thethreshold affinity coefficient for the vector space to change from zeroto one may be an affinity coefficient of 1.25. The user may place anorder via the social networking system for food from a Tex Mexrestaurant, may post a photo of the food, and may give a positive ratingof the food. Using the formula be α=Ax+By+ . . . +Cz , where A, B, . . .C represent particular actions the user has taken on the online socialnetwork with respect to a particular entity or concept, and x, y, . . .z represent the weights associated with each action, the online socialnetwork may calculate an affinity coefficient between the user and TexMex food to be α=1(0.75)+1(0.5)+1(0.25)=1.5. This may be because in thisexample, ordering food of a particular type may receive a weighting of0.75, posting a photo of the food to the online social network mayreceive a weighting of 0.50, and leaving a positive rating of the foodmay receive a weighting of 0.25. Since the calculated affinitycoefficient in this example is greater than the threshold affinitycoefficient in this example, the social-networking system may enter a“1” in the vector space for Tex Mex food. The social-networking systemmay perform similar calculations for each vector space in theuser-preference vector.

In particular embodiments, the social-networking system may receiveseveral references to catalog items from one or more third-partyvendors. Each reference may be associated with metadata items. As anexample and not by way of limitation, the references to catalog itemsmay be menu items offered by several different restaurants. Thethird-party vendors may be the restaurants. The metadata itemsassociated with each reference may contain information about therespective catalog item. The information may parallel the orderparameters in one or more aspects, and include items such as cost,location, one or more types, average user rating, or any other suitableinformation. As an example and not by way of limitation, a catalog itemfor yellow curry from a restaurant called Spicy Thai may have thefollowing metadata items: cost—$12.50; type1—Thai food;type2—vegetarian; and estimated delivery time—45 minutes; average userrating—3.7 out of 5. These metadata items may be accessed by thesocial-networking system. They may be stored on a server in associationwith the social-networking system or they may be sent by the third-partyvendor to the social-networking system. The social-networking system maygenerate a catalog-item vector for each received reference. Thecatalog-item vector may be the same length as the user-preferencevector, or it may be a different length. As an example and not by way oflimitation, a catalog-item vector for the yellow curry in the aboveexample may look like this:

Dimension Type Food Characteristic Mexican 0 Fast Food 0 Chinese 0 Delis0 Sandwiches 0 Pizza 0 Italian 0 Tex Mex 0 Thai 1 $ 0 $$ 1 $$$ 0Delivery in under 60 minutes 1 Vegetarian 1 Paleo 0 Gluten-Free 1Average user rating above 3.5 1

In particular embodiments, the social-networking system may calculatethe distances between the user-preference vector of the user and each ofseveral catalog-item vectors corresponding to the different catalogitems offered by the different vendors. These distances (or differences)may be calculated using any suitable method, including Hamming distance,cosine similarity, or any other suitable method. As an example and notby way of limitation, the social-networking system may calculate thesevector differences using the same processes that it uses to determinelookalike users, as discussed herein. Once the social-networking systemhas calculated differences, it may determine which catalog-item vectorsare most similar to the user-preference vector for the user. Similarvectors may have a high cosine similarity or a low vector difference.The social-networking system may rank the references based on thesimilarity between their respective catalog-item vectors and theuser-preference vector. The social-networking system may then generaterecommendations for catalog items that correspond to the rankedreferences, and send the generated recommendations to a client system ofthe user in ranked order.

In particular embodiments, the above calculated vector similarities maybe used to calculate a score for each reference. The scores for thereferences may be based at least in part on the order parameters, whichmay include the user-preference vector data as well as other parametersspecified by the user such as cost preference, delivery time preference,or any other suitable parameter. The scores may also be based on themetadata items for each catalog item, as discussed above. The scores mayalso be based on promotional campaigns run by the third-party vendors.Although this disclosure describes scoring references in a particularmanner, this disclosure contemplates scoring references in any suitablemanner.

In particular embodiments, the social-networking system may send to theclient system of the first user one or more references that has a scoreabove a threshold score. This may be in the alternative to or inaddition to sending references in ranked order. This may be because theuser may not wish to see all the recommendations. In particularembodiments it may be preferable to send the user a limited number ofreferences to limit the amount of data sent over the network or toreduce the amount of processing power required by the client system orto limit the burden on the user to decide between many enticing options.Although this disclosure describes sending recommendations to a clientsystem in a particular manner, this disclosure contemplates sendingrecommendations to a client system in any suitable manner.

In particular embodiments, the one or more order parameters may alsoinclude a vendor preference. The vendor preference may be determined ina similar way that any of the other user preferences are determined(e.g., through direct user specification, or through social-networkinginformation). As an example and not by way of limitation, a user maycheck in on the online social network several times at Chicken-for-U.This may increase an affinity coefficient between the user andChicken-for-U. The affinity coefficient may surpass the thresholdaffinity coefficient. In response, the social-networking system mayenter a “1” in the vector space that corresponds to Chicken-for-U. Inparticular embodiments, the user-preference vector may gain additionalvector spaces based on affinity coefficients between the user andvarious entities and concepts. As an example and not by way oflimitation, in response to the affinity coefficient for Chicken-for-Usurpassing the threshold, the social-networking system may generate avector space that corresponds to Chicken-for-U as a food vendor and thenenter a “1” in that vector space. In particular embodiments, the vendorpreference may be determined by identifying an edge between the firstnode in the social graph and a second node corresponding to a particularvendor. Although this disclosure describes providing order parameters ina particular manner, this disclosure contemplates providing orderparameters in any suitable manner.

In particular embodiments, each third-party vendor corresponds to a nodein the social graph. Scoring each reference may be further based on anumber of edge connections between the node corresponding to therespective third-party vendor and a plurality of users of the onlinesocial network. A higher number of edge connections may correspond to anincreased score. This may be desirable because the number of edgeconnections to a node may be a signal of the popularity of theparticular vendor corresponding to the node. A popular vendor may bemore desirable for a user than an unpopular vendor. As an example andnot by way of limitation, a user may prefer sushi. Two vendors may offersushi: Number One Sushi, and Sushi To-Go. Number One Sushi maycorrespond to a node in the social graph that has 15 edge connections.Sushi To-Go may correspond to a node in the social graph that has 2,000edge connections. As explained herein, an edge connection may begenerated when a user performs an action on the online social networkwith regard to an entity or concept, such as checking-in with theentity, ordering food from the entity via an application associated withthe online social network, following the entity, liking a postassociated with the entity, or any other suitable action. Because thenode for Sushi To-Go has 2,000 edge connections, this may be anindicator that Sushi To-Go is more popular and thus a better sushiprovider than Number One Sushi, whose corresponding node only have 15edge connections. Thus, a recommendation for sushi from Sushi To-Go maybe ranked higher than a recommendation for sushi from Number One Sushi,assuming all other metadata items (cost, delivery time, user rating) arerelatively equal. Although this disclosure describes scoring a referencein a particular manner, this disclosure contemplates scoring a referencein any suitable manner.

FIG. 13 illustrates an example method 1300 for recommending catalogitems to a user of an online social network. The method may begin atstep 1310, where the social-networking system may receive one or moreorder parameters from a client system of a first user of an onlinesocial network, the order parameters comprising an identifier associatedwith the first user and a location of the client system. At step 1320,the social-networking system may receive a plurality of references tocatalog items from one or more third-party vendors, wherein eachreference is associated with one or more metadata items. At step 1330,the social-networking system may score each reference of the pluralityof references based at least in part on the one or more order parametersand the one or more metadata items. At step 1340, the social-networkingsystem may send to the client system of the first user one or morereferences of the plurality of references that has a score above athreshold score. Particular embodiments may repeat one or more steps ofthe method of FIG. 13, where appropriate. Although this disclosuredescribes and illustrates particular steps of the method of FIG. 13 asoccurring in a particular order, this disclosure contemplates anysuitable steps of the method of FIG. 13 occurring in any suitable order.Moreover, although this disclosure describes and illustrates an examplemethod for recommending catalog items to a user of an online socialnetwork including the particular steps of the method of FIG. 13, thisdisclosure contemplates any suitable method for recommending catalogitems to a user of an online social network including any suitablesteps, which may include all, some, or none of the steps of the methodof FIG. 13, where appropriate. Furthermore, although this disclosuredescribes and illustrates particular components, devices, or systemscarrying out particular steps of the method of FIG. 13, this disclosurecontemplates any suitable combination of any suitable components,devices, or systems carrying out any suitable steps of the method ofFIG. 13.

In particular embodiments, the social-networking system may access thesocial graph to determine if a first user has interacted with a contentobject posted by a second user of the online social network. The contentobject may be associated with an entity of the online social network.The entity may be a vendor, and the content object may be related to acatalog item offered by the vendor. The social-networking system mayreceive an indication that the first user has interacted with thecontent object in order to make a recommendation to the first user. Asan example and not by way of limitation, consider the followingscenario. The second user may have visited an entity that may be MexicanRestaurant. The second user may have ordered a super burrito and posteda photo of his meal to the online social network. The first user mayhave viewed the second user's post and may have “liked” the post orcommented on the post with text that says “Looks good!” In response tothis interaction, the social-networking system may update theuser-preference vector associated with the first user as well as adjustthe affinity coefficient between the user node corresponding to thefirst user and the node corresponding to Mexican Restaurant. Inparticular embodiments, other affinity coefficients may be modified aswell. In this example, those affinity coefficients that are adjusted mayinclude the user's affinity coefficient for burritos, for Mexican food,or for any other suitable entity.

In particular embodiments, the social-networking system may access userdata associated with the first user and entity data associated with theentity. The user data may be the information included in the socialgraph that is discussed herein. The user node associated with the firstuser may be connected to other nodes. The user data may include anindication that the first user has interacted with a recently postedcontent object associated with the entity. Continuing with the aboveexample, the social-networking system may determine that the first userhas interacted with the content object associated with MexicanRestaurant. The entity data may include catalog items associated withthe entity. As an example and not by way of limitation, the catalogitems may be menu items from Mexican Restaurant that includes a burrito,enchiladas, nachos, tacos, and a quesadilla. The entity data may alsoinclude information related to offers the entity may be willing to maketo potential customers, such as free drinks, half-off appetizers,two-for-one deals, or any other suitable offer. In particularembodiments, the entity data may also include an average user rating ofthe entity.

In particular embodiments, the entity data may also include a number ofusers of the online social network who have posted or interacted withcontent objects on the online social network that are related to theentity. The number of users of the online social network who have postedor interacted with content objects on the online social network that arerelated to the entity may be represented by several edges in a socialgraph that connect to a node that corresponds to the entity. A highernumber of edge connections may correspond to an increased score. Thismay be desirable because the number of edge connections to a node may bea signal of the popularity of the particular vendor corresponding to thenode. A popular vendor may be more desirable for a user than anunpopular vendor. As an example and not by way of limitation, a user mayprefer sushi. Two vendors may offer sushi: Neko Sushi, and Sushi Tenshi.Neko Sushi may correspond to a node in the social graph that has 15 edgeconnections. Sushi Tenshi may correspond to a node in the social graphthat has 2,000 edge connections. As explained herein, an edge connectionmay be generated when a user performs an action on the online socialnetwork with regard to an entity or concept, such as checking-in withthe entity, ordering food from the entity via an application associatedwith the online social network, following the entity, liking a postassociated with the entity, or any other suitable action. Because thenode for Sushi Tenshi has 2,000 edge connections, this may be anindicator that Sushi Tenshi is more popular and thus a better sushiprovider than Neko Sushi, whose corresponding node only have 15 edgeconnections. Thus, a recommendation for sushi from Sushi Tenshi may beranked higher than a recommendation for sushi from Neko Sushi, assumingall other metadata items (cost, delivery time, user rating) arerelatively equal. Although this disclosure describes scoring a referencein a particular manner, this disclosure contemplates scoring a referencein any suitable manner.

In particular embodiments, when the social-networking system receivesthe indication that the first user has interacted with the contentobject posted by the second user, where the content object is related tothe entity, the social-networking system may identify one or moreprompts. The identification of the one or more prompts may be based atleast in part on the user data and the entity data. The one or moreprompts may be invitations for the first user to take some action withregard to the entity, such as to purchase items from the entity. As anexample and not by way of limitation, the prompt may be a notificationthat says, “Kevin, your friend Bree just had ramen at Orenchi. Make areservation for this weekend.” Thus, the prompt may be an invitation tomake a reservation at the entity Orenchi. Although this disclosuredescribes identifying particular prompts in a particular manner, thisdisclosure contemplates identifying any suitable prompts in any suitablemanner.

FIG. 14 illustrates an example method 1400 for determining to send aselected prompt to a user of the online social network. At step 1410,the social-networking system may receive an indication that a first userhas interacted with a content object posted by a second user. Asdiscussed herein, the content object may be any suitable object, such asa status update, a photo, a video, a check-in, or any other suitablecontent. As an example and not by way of limitation, a user Bree maypost a photo to the online social network of her recent meal at OrenchiRamen. He may include a caption to her photo that says: “the thickestRamen noodles!” Bree may also tag Orenchi Ramen (which may be an entityon the online social network), or use a geotag which identifies Orenchias the location at which the photo was taken. The social-networkingsystem may receive an indication that Bree has posted this contentobject. At step 1420, the social-networking system may determine thatthe content object is associated with a vendor. The content object maybe associated with an entity automatically, because the user who postedthe content object may be an entity. But the content object may beassociated with one or more other entities, such as places, businesses,or organizations. The social-networking system may determine that thecontent object is associated with an entity by any suitable indicator,including tags, geotags, or context. Sometimes the entity may also be avendor. The vendor may offer products or services to the public, and maywish to advertise via the online social network. If the content objectis associated with a vendor that is advertising using the methodsdiscussed herein, the social-networking system may proceed to step 1430,where the social-networking system may access entity data to identifyone or more prompts. The entity data may include prompts as well asother entity data such as approximate wait times, busy times, slowtimes, special promotionals, menu items offered by the vendor, or anyother suitable information.

At step 1440, the social networking system may determine if an affinitycoefficient between the first user and the vendor is above a thresholdcoefficient. In particular embodiments, any interaction performed by theuser with regard to the vendor may raise the affinity coefficient abovethe threshold. In particular embodiments, the threshold may be zero,such that so long as the user has not had any negative interactions withthe vendor on the online social network (e.g., such as a “mad face”reaction with regard to the vendor), the affinity coefficient may exceedthe threshold. At step 1450, the social-networking system may accessuser data. The user data may be contained in a user-preference vector asdiscussed herein. The user data may be used to select one of theidentified prompts. The method of selection may be to create a promptvector tor for each of the prompts and calculate the difference betweeneach of the prompt vectors and the user-preference vector. Then thesocial-networking system may select the most similar prompt vector tosend to the user. This process may be similar to the process forselecting menu item recommendations as explained herein or similar tothe process for identifying lookalike users, as explained herein. Atstep 1460, the social-networking system may send the selected prompt tothe client system of the first user for display.

Particular embodiments may repeat one or more steps of the method ofFIG. 14, where appropriate. Although this disclosure describes andillustrates particular steps of the method of FIG. 14 as occurring in aparticular order, this disclosure contemplates any suitable steps of themethod of FIG. 14 occurring in any suitable order. Moreover, althoughthis disclosure describes and illustrates an example method fordetermining to send a selected prompt to a user of the online socialnetwork including the particular steps of the method of FIG. 14, thisdisclosure contemplates any suitable method for determining to send aselected prompt to a user of the online social network including anysuitable steps, which may include all, some, or none of the steps of themethod of FIG. 14, where appropriate. Furthermore, although thisdisclosure describes and illustrates particular components, devices, orsystems carrying out particular steps of the method of FIG. 14, thisdisclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 14.

FIG. 15 illustrates an example method 1500 for sending prompts to invitea user to perform an action with regard to an entity. The method maybegin at step 1510, where the social-networking system may access asocial graph maintained by an online social network, the social graphcomprising a plurality of nodes and a plurality of edges connecting thenodes, each edge representing a relationship between two of the nodes.At step 1520, the social networking system may receive an indicationthat a first user of the online social network has interacted with acontent object posted by a second user of the online social network,wherein the content object is associated with a first entity thatcorresponds to a particular node in the social graph. At step 1530, thesocial-networking system may access user data associated with the firstuser and entity data associated with the first entity. At step 1540, thesocial networking system may, in response to receiving the indication,identify one or more prompts, wherein the identification is based atleast in part on the user data and the entity data. At step 1550, thesocial-networking system may send at least one of the prompts to aclient device of the first user for display on a display screen of theclient device. Particular embodiments may repeat one or more steps ofthe method of FIG. 15, where appropriate. Although this disclosuredescribes and illustrates particular steps of the method of FIG. 15 asoccurring in a particular order, this disclosure contemplates anysuitable steps of the method of FIG. 15 occurring in any suitable order.Moreover, although this disclosure describes and illustrates an examplemethod for sending prompts to invite a user to perform an action withregard to an entity including the particular steps of the method of FIG.15, this disclosure contemplates any suitable method for sending promptsto invite a user to perform an action with regard to an entity includingany suitable steps, which may include all, some, or none of the steps ofthe method of FIG. 15, where appropriate. Furthermore, although thisdisclosure describes and illustrates particular components, devices, orsystems carrying out particular steps of the method of FIG. 15, thisdisclosure contemplates any suitable combination of any suitablecomponents, devices, or systems carrying out any suitable steps of themethod of FIG. 15.

In particular embodiments, the social-networking system may generaterecommendations based on an event object. A user of the online socialnetwork may create an event object for an event. Planning for an eventmay be challenging because each attendee may have different foodpreferences and different expectations. The social-networking system mayhelp the event creator to order the right type of food that will appealto as many people as possible. As an example and not by way oflimitation, the event may be a baby shower for a user named Jessica. Thecreator of the event may be a user named Stephany. Stephany may generatethe event object by making the appropriate selections in an eventcreation interface of the online social network. Stephany may inviteseveral other people to the event and designate the location of theevent to be at a nearby park on Saturday, October 21 at 3:00 PM. Each ofthe invitees may be users of the online social network as well. Thesocial-networking system may access these users' social-networking datato identify or generate recommendations for the event creator, Stephany.The recommendations may include food recommendations, cateringrecommendations, music recommendations, rescheduling recommendations,game recommendations, a recommended seating chart, or any other suitablerecommendation. This may help Stephany plan the event and may saveresources by requiring fewer calculations and queries to search engines.

In particular embodiments, the social-networking system may receive anindication that a user of an online social network has created an eventobject for an event. The social-networking system may receive thisindication when the user generates the event object. The event objectmay be generated when invitations are sent to the invitees over theonline social network, or at a previous point in time, such as when theinvitees are selected. The event object may comprise a plurality ofevent parameters. The event parameters may include a date for the event,a time of the event, a location of the event, a name of the event, andone or more names of invitees to the event. Although this disclosuredescribes receiving an indication of an event in a particular manner,this disclosure contemplates receiving an indication of an event in anysuitable manner.

In particular embodiments, the social-networking system may access thesocial graph maintained by the social-networking system. Thesocial-networking system may access data associated with each invitee.The data associated with each invitee may be the user node correspondingto that user as well as edge connections between the respective usernode and several other nodes that correspond to various entities andobjects, such as songs the user has liked or has listened to,restaurants the user has checked-in at, liked, or posted content about,or any other suitable information. As an example and not by way oflimitation, there may be 50 invitees to Jessica's baby shower. Each ofthese users may have a corresponding user node in the social graph. Inparticular embodiments, each invitee may correspond to a user node, andeach of one or more food types corresponds to a concept node. Thesocial-networking system may identify one or more edges between one ormore user nodes corresponding to the invitees and one or more conceptnodes corresponding to the one or more food types. In particularembodiments, the social-networking system may make recommendations basedoff these identifications.

In particular embodiments, from the information contained in the socialgraph, the social-networking system may generate a user-preferencevector for each of the invitees. Alternatively, the user-preferencevector may have already been created for each of the invitees. In thiscase, the social-networking system may only need to access theuser-preference vectors.

The user-preference vector may have N dimensions. Each dimension maycorrespond to a preference of the user. As an example and not by way oflimitation, an invitee to Jessica's baby shower may have auser-preference vector with 16 dimensions, as shown in the followingtable:

Dimension Type User Preference Mexican 1 Fast Food 1 Chinese 1 Delis 0Sandwiches 0 Pizza 1 Italian 0 Tex Mex 0 Thai 0 $ 1 $$ 1 $$$ 0 Vegan 0Vegetarian 1 Paleo 0 Gluten-Free 0

The user-preference vector may be regularly updated to track thechanging preferences of the user. Updates to the user-preference vectormay be based on updates to the social graph with regard to the user. Theuser-preference vector may be individualized for each user based ondirect input from the user (e.g., the user specifies that she likesMexican food, does not like deli food, etc.), or based on onlinesocial-networking activity of the user. As an example and not by way oflimitation, a user may order food from a Chinese restaurant via theonline social network. The user may rate the food with the app, or maypost content to the online social network that says something positiveabout the food. For example, the user may post a photo of the food andsay, “Just got take-out from Fortune Cookie, my favorite Chineserestaurant.” This may inform the social-networking system that the userlikes Chinese food. In particular embodiments, a positive post such asthis may be enough for the social-networking system to determine thatthe user likes Chinese food and thus enter a “1” in that vector space.In particular embodiments, the social-networking system may create anode in the social graph that corresponds to each food type. When theuser posts something positive about a particular food type, thesocial-networking system may generate an edge between that user's usernode and the concept node corresponding to that food type. Each onlinesocial-networking interaction the user has with that food type maymodify the affinity coefficient between that user's user node and theconcept node corresponding to that food type. If the user has not hadany interaction with a particular food type, the respective affinitycoefficient may be zero. Once the affinity coefficient increases past athreshold affinity, the social-networking system may determine that theuser likes that food type and thus may enter a “1” in the vector spacefor that food type. As an example and not by way of limitation, a usermay initially have an affinity coefficient of zero for Tex Mex. Thethreshold affinity coefficient for the vector space to change from zeroto one may be an affinity coefficient of 1.25. The user may place anorder via the social networking system for food from a Tex Mexrestaurant, may post a photo of the food, and may give a positive ratingof the food. Using the formula be α=Ax+By+ . . . +Cz , where A, B, . . .C represent particular actions the user has taken on the online socialnetwork with respect to a particular entity or concept, and x, y, . . .z represent the weights associated with each action, the online socialnetwork may calculate an affinity coefficient between the user and TexMex food to be α=1(0.75)+1(0.5)+1(0.25)=1.5. This may be because in thisexample, ordering food of a particular type may receive a weighting of0.75, posting a photo of the food to the online social network mayreceive a weighting of 0.50, and leaving a positive rating of the foodmay receive a weighting of 0.25. Since the calculated affinitycoefficient in this example is greater than the threshold affinitycoefficient in this example, the social-networking system may enter a“1” in the vector space for Tex Mex food. The social-networking systemmay perform similar calculations for each vector space in theuser-preference vector.

Each user's user-preference vector may be different because each personmay have unique tastes and preferences. In particular embodiments, thesocial-networking system may make recommendations based on theuser-preference vectors of at least some of the invitees to an event.The idea behind this may be to recommend food for the event that wouldappeal to as many people as possible. To do this, the social-networkingsystem may perform one or more analyses on the user-vectors for theinvitees. In particular embodiments and to save processing power, thesocial-networking system may base its recommendations on those inviteeswho have indicated an intent to attend the event. In particularembodiments, each invitee may receive a weight that may indicate howmuch of an influence his or her preferences may have on therecommendations. In particular embodiments, an invitee who has indicatedan intent to attend the event may be assigned a heavier weight than aninvitee who has not indicated an intent to attend the event. This may bebecause the invitee who has not indicated an intent to attend the eventmay not attend the event at all, and thus his preferences may not matterat all.

The analyses that the social-networking system may perform includedetermining an average user-preference vector for all the invitees,determining the most popular vector elements by summing across alluser-preference vectors, or by doing any other suitable analysis. Thesocial-networking system may attempt to create a single user-preferencevector that represents the user-preference vectors of at least some ofthe invitees. As an example and not by way of limitation, consider thefollowing user-preference vectors for the example invitees.

Mexican Thai Sushi Pizza Italian Burgers Vegan Vegetarian GF Jessica 1 00 1 0 0 0 1 0 Steph 0 0 0 1 0 1 0 0 0 Jenny 0 0 1 1 0 0 1 0 0 Ruth 1 1 00 0 0 0 0 0 Carol 1 1 0 0 1 0 0 1 1 Lynne 0 1 0 1 1 0 0 0 0 Kate 0 1 0 10 1 0 0 1 Total 3 4 1 5 2 2 1 2 2 Average .42 .57 .14 .71 .29 .29 .14.29 .29 Rounded 0 1 0 1 0 0 0 0 0 Average

Each column may represent a vector space and each row may represent auser-preference vector. As can be seen by the above table, summing thevector spaces over all invitees may lead to a slightly different outcomethan calculating the average preference for each vector space and thenrounding to the nearest whole number. By summing, it is clear to seethat pizza is the most popular option, so if the social-networkingsystem uses this method it may determine that pizza is the best option.However, if the social-networking system uses the averages and thenrounds to the nearest whole number, Thai food or pizza may beappropriate food options for the event. In particular embodiments, thesocial-networking system may take individual user preferences intoaccount. For example if a minority of people are vegetarian, vegan, orgluten-free (GF), it may be desirable to offer at least some vegetarian,vegan, and/or gluten free options. Thus, the social-networking systemmay make recommendations based on this information.

In particular embodiments, the social-networking system may access adatabase associated with one or more third-party food-service providers,the database comprising a plurality of food-service parametersassociated with the food-service providers. These food-serviceparameters may include things like cost, average user rating, food-type,the size of a party that the food-service provider can handle, ageographical distance between the food-service provider and a locationassociated with the event, or any other suitable food-service parameter.The social-networking system may generate a food-service provider vectorfor each of the food-service providers. The food-service provider vectormay be the same length as the user-preference vector, or it may be adifferent length. As an example and not by way of limitation, afood-service provider vector for an example food-service provider maylook like this:

Dimension Type Caterer Characteristic Mexican 0 Fast Food 0 Chinese 0Delis 0 Sandwiches 0 Pizza 0 Italian 0 Tex Mex 0 Thai 1 $ 0 $$ 1 $$$ 0Can service parties of 50 1 Vegetarian 1 Paleo 0 Gluten-Free 1 Averageuser rating above 3.5 1

In particular embodiments, the social-networking system may calculatethe distances between the calculated averaged or summed user-preferencevector of the users and each of several food-service provider vectorscorresponding to the different food-service providers. These distances(or differences) may be calculated using any suitable method, includingHamming distance, cosine similarity, or any other suitable method. As anexample and not by way of limitation, the social-networking system maycalculate these vector differences using the same processes that it usesto determine lookalike users, as discussed herein. Once thesocial-networking system has calculated differences, it may determinewhich food-service provider may be the most similar to theuser-preference vectors for the invitees. Similar vectors may have ahigh cosine similarity or a low vector difference. The social-networkingsystem may rank the food-service providers based on the similaritybetween their respective food-service provider vectors and theuser-preference vectors. The social-networking system may then generaterecommendations for food-service providers that correspond to the rankedreferences, and send the generated recommendations to a client system ofthe user in ranked order.

In particular embodiments, the above calculated vector similarities maybe used to calculate a score for each food-service provider. The scoresfor the references may be based at least in part on the eventparameters, which may include the user-preference vector data as well asother parameters specified by the event creator such as cost preference,delivery time preference, or any other suitable parameter. The scoresmay also be based on the vector space information of individualinvitees. As an example and not by way of limitation, if at least oneinvitee is a vegetarian (as determined by her user-preference vector orother social-networking data), the social-networking system may increasea score for a food-service provider that offers a vegetarian option. Thescores may also be based on promotional campaigns run by thefood-service providers. Although this disclosure describes scoringreferences in a particular manner, this disclosure contemplates scoringreferences in any suitable manner.

In particular embodiments, the social-networking system may generate oneor more food-service recommendations for the event, wherein thefood-service recommendations are generated based on (1) at least some ofthe plurality of event parameters, (2) at least some of the plurality ofnodes and the plurality of edges connecting the nodes in the socialgraph, and (3) at least some of the plurality of food-serviceparameters. The recommendation may be based on the user-preferencevectors and the food-service provider vectors, as discussed herein. Inparticular embodiments, the social-networking system may send thefood-service recommendations in ranked order to the a client systemassociated with the user of the online social network.

In particular embodiments, the social-networking system may generate aseating chart for an event. Consider that a wedding usually brings manypeople from both sides of the marriage to the event. Lots of people maynot know each other. It may be desirable for friends to sit next to eachother at the same table. The social-networking system may bewell-equipped to determine which guests would like to sit next to eachother, and which guests probably should not be seated at the same table.In particular embodiments, the seating chart may be generated based on adegree of separation in the social graph between user nodescorresponding to the plurality of invitees. As an example and not by wayof limitation, two wedding guests, Michael and Samantha, may be friendson the online social network. Thus, they may have a first-degreeconnection. A third user, Jacob, may be friends with Samantha, but notwith Michael. Thus, Michael and Jacob may have a second-degreeconnection. Depending on the number of guests and the seating capacity,the social networking system may determine to seat Michael, Jacob, andSamantha at the same table, since they all have at least a two-degreeseparation. The social-networking system may take different factors intoconsideration when creating the seating chart, such as similarinterests, backgrounds, education, or any other suitable factor.Although this disclosure describes creating a seating chart in aparticular manner, this disclosure contemplates creating a seating chartin any suitable manner.

FIG. 16 illustrates an example method 1600 for sending recommendationsfor one or more food-service providers to a client system of a user ofan online social network. The method may begin at step 1610, where thesocial-networking system may receive an indication that a user of anonline social network has created an event object for an event, whereinthe event object comprises a plurality of event parameters. At step1620, the social networking system may access a social graph maintainedby an online social network, the social graph comprising a plurality ofuser nodes, a plurality of concept nodes, and a plurality of edgesconnecting at least some user nodes to at least some concept nodes, eachedge representing a relationship between two of the nodes. At step 1630,the social-networking system may access a database associated with oneor more third-party food-service providers, the database comprising aplurality of food-service parameters associated with the food-serviceproviders. At step 1640, the social networking system may generate oneor more food-service recommendations for the event, wherein the foodservice recommendations are generated based on (1) at least some of theplurality of event parameters, (2) at least some of the plurality ofnodes and the plurality of edges connecting the nodes in the socialgraph, and (3) at least some of the plurality of food-serviceparameters. At step 1650, the social-networking system may send thefood-service recommendations in ranked order to the a client systemassociated with the user of the online social network. Particularembodiments may repeat one or more steps of the method of FIG. 16, whereappropriate. Although this disclosure describes and illustratesparticular steps of the method of FIG. 16 as occurring in a particularorder, this disclosure contemplates any suitable steps of the method ofFIG. 16 occurring in any suitable order. Moreover, although thisdisclosure describes and illustrates an example method for sendingrecommendations for one or more food-service providers to a clientsystem of a user of an online social network including the particularsteps of the method of FIG. 16, this disclosure contemplates anysuitable method for sending recommendations for one or more food-serviceproviders to a client system of a user of an online social networkincluding any suitable steps, which may include all, some, or none ofthe steps of the method of FIG. 16, where appropriate. Furthermore,although this disclosure describes and illustrates particularcomponents, devices, or systems carrying out particular steps of themethod of FIG. 16, this disclosure contemplates any suitable combinationof any suitable components, devices, or systems carrying out anysuitable steps of the method of FIG. 16.

FIG. 17 illustrates an example network environment 1700 associated witha social-networking system. Network environment 1700 includes a clientsystem 1730, a social-networking system 1760, and a third-party system1770 connected to each other by a network 1710. Although FIG. 17illustrates a particular arrangement of client system 1730,social-networking system 1760, third-party system 1770, and network1710, this disclosure contemplates any suitable arrangement of clientsystem 1730, social-networking system 1760, third-party system 1770, andnetwork 1710. As an example and not by way of limitation, two or more ofclient system 1730, social-networking system 1760, and third-partysystem 1770 may be connected to each other directly, bypassing network1710. As another example, two or more of client system 1730,social-networking system 1760, and third-party system 1770 may bephysically or logically co-located with each other in whole or in part.Moreover, although FIG. 17 illustrates a particular number of clientsystems 1730, social-networking systems 1760, third-party systems 1770,and networks 1710, this disclosure contemplates any suitable number ofclient systems 1730, social-networking systems 1760, third-party systems1770, and networks 1710. As an example and not by way of limitation,network environment 1700 may include multiple client system 1730,social-networking systems 1760, third-party systems 1770, and networks1710.

This disclosure contemplates any suitable network 1710. As an exampleand not by way of limitation, one or more portions of network 1710 mayinclude an ad hoc network, an intranet, an extranet, a virtual privatenetwork (VPN), a local area network (LAN), a wireless LAN (WLAN), a widearea network (WAN), a wireless WAN (WWAN), a metropolitan area network(MAN), a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a cellular telephone network, or a combinationof two or more of these. Network 1710 may include one or more networks1710.

Links 1750 may connect client system 1730, social-networking system1760, and third-party system 1770 to communication network 1710 or toeach other. This disclosure contemplates any suitable links 1750. Inparticular embodiments, one or more links 1750 include one or morewireline (such as for example Digital Subscriber Line (DSL) or Data OverCable Service Interface Specification (DOCSIS)), wireless (such as forexample Wi-Fi or Worldwide Interoperability for Microwave Access(WiMAX)), or optical (such as for example Synchronous Optical Network(SONET) or Synchronous Digital Hierarchy (SDH)) links. In particularembodiments, one or more links 1750 each include an ad hoc network, anintranet, an extranet, a VPN, a LAN, a WLAN, a WAN, a WWAN, a MAN, aportion of the Internet, a portion of the PSTN, a cellulartechnology-based network, a satellite communications technology-basednetwork, another link 1750, or a combination of two or more such links1750. Links 1750 need not necessarily be the same throughout networkenvironment 1700. One or more first links 1750 may differ in one or morerespects from one or more second links 1750.

In particular embodiments, client system 1730 may be an electronicdevice including hardware, software, or embedded logic components or acombination of two or more such components and capable of carrying outthe appropriate functionalities implemented or supported by clientsystem 1730. As an example and not by way of limitation, a client system1730 may include a computer system such as a desktop computer, notebookor laptop computer, netbook, a tablet computer, e-book reader, GPSdevice, camera, personal digital assistant (PDA), handheld electronicdevice, cellular telephone, smartphone, augmented/virtual realitydevice, other suitable electronic device, or any suitable combinationthereof. This disclosure contemplates any suitable client systems 1730.A client system 1730 may enable a network user at client system 1730 toaccess network 1710. A client system 1730 may enable its user tocommunicate with other users at other client systems 1730.

In particular embodiments, client system 1730 may include a web browser1732 and may have one or more add-ons, plug-ins, or other extensions. Auser at client system 1730 may enter a Uniform Resource Locator (URL) orother address directing the web browser 1732 to a particular server(such as server 1762, or a server associated with a third-party system1770), and the web browser 1732 may generate a Hyper Text TransferProtocol (HTTP) request and communicate the HTTP request to server. Theserver may accept the HTTP request and communicate to client system 1730one or more Hyper Text Markup Language (HTML) files responsive to theHTTP request. Client system 1730 may render a webpage based on the HTMLfiles from the server for presentation to the user. This disclosurecontemplates any suitable webpage files. As an example and not by way oflimitation, webpages may render from HTML files, Extensible Hyper TextMarkup Language (XHTML) files, or Extensible Markup Language (XML)files, according to particular needs. Such pages may also executescripts, combinations of markup language and scripts, and the like.Herein, reference to a webpage encompasses one or more correspondingwebpage files (which a browser may use to render the webpage) and viceversa, where appropriate.

In particular embodiments, social-networking system 1760 may be anetwork-addressable computing system that can host an online socialnetwork. Social-networking system 1760 may generate, store, receive, andsend social-networking data, such as, for example, user-profile data,concept-profile data, social-graph information, or other suitable datarelated to the online social network. Social-networking system 1760 maybe accessed by the other components of network environment 1700 eitherdirectly or via network 1710. As an example and not by way oflimitation, client system 1730 may access social-networking system 1760using a web browser 1732, or a native application associated withsocial-networking system 1760 (e.g., a mobile social-networkingapplication, a messaging application, another suitable application, orany combination thereof) either directly or via network 1710. Inparticular embodiments, social-networking system 1760 may include one ormore servers 1762. Each server 1762 may be a unitary server or adistributed server spanning multiple computers or multiple datacenters.Servers 1762 may be of various types, such as, for example and withoutlimitation, web server, news server, mail server, message server,advertising server, file server, application server, exchange server,database server, proxy server, another server suitable for performingfunctions or processes described herein, or any combination thereof. Inparticular embodiments, each server 1762 may include hardware, software,or embedded logic components or a combination of two or more suchcomponents for carrying out the appropriate functionalities implementedor supported by server 1762. In particular embodiments,social-networking system 1760 may include one or more data stores 1764.Data stores 1764 may be used to store various types of information. Inparticular embodiments, the information stored in data stores 1764 maybe organized according to specific data structures. In particularembodiments, each data store 1764 may be a relational, columnar,correlation, or other suitable database. Although this disclosuredescribes or illustrates particular types of databases, this disclosurecontemplates any suitable types of databases. Particular embodiments mayprovide interfaces that enable a client system 1730, a social-networkingsystem 1760, or a third-party system 1770 to manage, retrieve, modify,add, or delete, the information stored in data store 1764.

In particular embodiments, social-networking system 1760 may store oneor more social graphs in one or more data stores 1764. In particularembodiments, a social graph may include multiple nodes—which may includemultiple user nodes (each corresponding to a particular user) ormultiple concept nodes (each corresponding to a particular concept)—andmultiple edges connecting the nodes. Social-networking system 1760 mayprovide users of the online social network the ability to communicateand interact with other users. In particular embodiments, users may jointhe online social network via social-networking system 1760 and then addconnections (e.g., relationships) to a number of other users ofsocial-networking system 1760 to whom they want to be connected. Herein,the term “friend” may refer to any other user of social-networkingsystem 1760 with whom a user has formed a connection, association, orrelationship via social-networking system 1760.

In particular embodiments, social-networking system 1760 may provideusers with the ability to take actions on various types of items orobjects, supported by social-networking system 1760. As an example andnot by way of limitation, the items and objects may include groups orsocial networks to which users of social-networking system 1760 maybelong, events or calendar entries in which a user might be interested,computer-based applications that a user may use, transactions that allowusers to buy or sell items via the service, interactions withadvertisements that a user may perform, or other suitable items orobjects. A user may interact with anything that is capable of beingrepresented in social-networking system 1760 or by an external system ofthird-party system 1770, which is separate from social-networking system1760 and coupled to social-networking system 1760 via a network 1710.

In particular embodiments, social-networking system 1760 may be capableof linking a variety of entities. As an example and not by way oflimitation, social-networking system 1760 may enable users to interactwith each other as well as receive content from third-party systems 1770or other entities, or to allow users to interact with these entitiesthrough an application programming interfaces (API) or othercommunication channels.

In particular embodiments, a third-party system 1770 may include one ormore types of servers, one or more data stores, one or more interfaces,including but not limited to APIs, one or more web services, one or morecontent sources, one or more networks, or any other suitable components,e.g., that servers may communicate with. A third-party system 1770 maybe operated by a different entity from an entity operatingsocial-networking system 1760. In particular embodiments, however,social-networking system 1760 and third-party systems 1770 may operatein conjunction with each other to provide social-networking services tousers of social-networking system 1760 or third-party systems 1770. Inthis sense, social-networking system 1760 may provide a platform, orbackbone, which other systems, such as third-party systems 1770, may useto provide social-networking services and functionality to users acrossthe Internet.

In particular embodiments, a third-party system 1770 may include athird-party content object provider. A third-party content objectprovider may include one or more sources of content objects, which maybe communicated to a client system 1730. As an example and not by way oflimitation, content objects may include information regarding things oractivities of interest to the user, such as, for example, movie showtimes, movie reviews, restaurant reviews, restaurant menus, productinformation and reviews, or other suitable information. As anotherexample and not by way of limitation, content objects may includeincentive content objects, such as coupons, discount tickets, giftcertificates, or other suitable incentive objects.

In particular embodiments, social-networking system 1760 also includesuser-generated content objects, which may enhance a user's interactionswith social-networking system 1760. User-generated content may includeanything a user can add, upload, send, or “post” to social-networkingsystem 1760. As an example and not by way of limitation, a usercommunicates posts to social-networking system 1760 from a client system1730. Posts may include data such as status updates or other textualdata, location information, photos, videos, links, music or othersimilar data or media. Content may also be added to social-networkingsystem 1760 by a third-party through a “communication channel,” such asa newsfeed or stream.

In particular embodiments, social-networking system 1760 may include avariety of servers, sub-systems, programs, modules, logs, and datastores. In particular embodiments, social-networking system 1760 mayinclude one or more of the following: a web server, action logger,API-request server, relevance-and-ranking engine, content-objectclassifier, notification controller, action log,third-party-content-object-exposure log, inference module,authorization/privacy server, search module, advertisement-targetingmodule, user-interface module, user-profile store, connection store,third-party content store, or location store. Social-networking system1760 may also include suitable components such as network interfaces,security mechanisms, load balancers, failover servers,management-and-network-operations consoles, other suitable components,or any suitable combination thereof. In particular embodiments,social-networking system 1760 may include one or more user-profilestores for storing user profiles. A user profile may include, forexample, biographic information, demographic information, behavioralinformation, social information, or other types of descriptiveinformation, such as work experience, educational history, hobbies orpreferences, interests, affinities, or location. Interest informationmay include interests related to one or more categories. Categories maybe general or specific. As an example and not by way of limitation, if auser “likes” an article about a brand of shoes the category may be thebrand, or the general category of “shoes” or “clothing.” A connectionstore may be used for storing connection information about users. Theconnection information may indicate users who have similar or commonwork experience, group memberships, hobbies, educational history, or arein any way related or share common attributes. The connectioninformation may also include user-defined connections between differentusers and content (both internal and external). A web server may be usedfor linking social-networking system 1760 to one or more client systems1730 or one or more third-party system 1770 via network 1710. The webserver may include a mail server or other messaging functionality forreceiving and routing messages between social-networking system 1760 andone or more client systems 1730. An API-request server may allow athird-party system 1770 to access information from social-networkingsystem 1760 by calling one or more APIs. An action logger may be used toreceive communications from a web server about a user's actions on oroff social-networking system 1760. In conjunction with the action log, athird-party-content-object log may be maintained of user exposures tothird-party-content objects. A notification controller may provideinformation regarding content objects to a client system 1730.Information may be pushed to a client system 1730 as notifications, orinformation may be pulled from client system 1730 responsive to arequest received from client system 1730. Authorization servers may beused to enforce one or more privacy settings of the users ofsocial-networking system 1760. A privacy setting of a user determineshow particular information associated with a user can be shared. Theauthorization server may allow users to opt in to or opt out of havingtheir actions logged by social-networking system 1760 or shared withother systems (e.g., third-party system 1770), such as, for example, bysetting appropriate privacy settings. Third-party-content-object storesmay be used to store content objects received from third parties, suchas a third-party system 1770. Location stores may be used for storinglocation information received from client systems 1730 associated withusers. Advertisement-pricing modules may combine social information, thecurrent time, location information, or other suitable information toprovide relevant advertisements, in the form of notifications, to auser.

FIG. 18 illustrates example social graph 1800. In particularembodiments, social-networking system 1760 may store one or more socialgraphs 1800 in one or more data stores. In particular embodiments,social graph 1800 may include multiple nodes—which may include multipleuser nodes 1802 or multiple concept nodes 1804—and multiple edges 1806connecting the nodes. Example social graph 1800 illustrated in FIG. 18is shown, for didactic purposes, in a two-dimensional visual maprepresentation. In particular embodiments, a social-networking system1760, client system 1730, or third-party system 1770 may access socialgraph 1800 and related social-graph information for suitableapplications. The nodes and edges of social graph 1800 may be stored asdata objects, for example, in a data store (such as a social-graphdatabase). Such a data store may include one or more searchable orqueryable indexes of nodes or edges of social graph 1800.

In particular embodiments, a user node 1802 may correspond to a user ofsocial-networking system 1760. As an example and not by way oflimitation, a user may be an individual (human user), an entity (e.g.,an enterprise, business, or third-party application), or a group (e.g.,of individuals or entities) that interacts or communicates with or oversocial-networking system 1760. In particular embodiments, when a userregisters for an account with social-networking system 1760,social-networking system 1760 may create a user node 1802 correspondingto the user, and store the user node 1802 in one or more data stores.Users and user nodes 1802 described herein may, where appropriate, referto registered users and user nodes 1802 associated with registeredusers. In addition or as an alternative, users and user nodes 1802described herein may, where appropriate, refer to users that have notregistered with social-networking system 1760. In particularembodiments, a user node 1802 may be associated with informationprovided by a user or information gathered by various systems, includingsocial-networking system 1760. As an example and not by way oflimitation, a user may provide his or her name, profile picture, contactinformation, birth date, sex, marital status, family status, employment,education background, preferences, interests, or other demographicinformation. In particular embodiments, a user node 1802 may beassociated with one or more data objects corresponding to informationassociated with a user. In particular embodiments, a user node 1802 maycorrespond to one or more webpages.

In particular embodiments, a concept node 1804 may correspond to aconcept. As an example and not by way of limitation, a concept maycorrespond to a place (such as, for example, a movie theater,restaurant, landmark, or city); a website (such as, for example, awebsite associated with social-network system 1760 or a third-partywebsite associated with a web-application server); an entity (such as,for example, a person, business, group, sports team, or celebrity); aresource (such as, for example, an audio file, video file, digitalphoto, text file, structured document, or application) which may belocated within social-networking system 1760 or on an external server,such as a web-application server; real or intellectual property (suchas, for example, a sculpture, painting, movie, game, song, idea,photograph, or written work); a game; an activity; an idea or theory; anobject in a augmented/virtual reality environment; another suitableconcept; or two or more such concepts. A concept node 1804 may beassociated with information of a concept provided by a user orinformation gathered by various systems, including social-networkingsystem 1760. As an example and not by way of limitation, information ofa concept may include a name or a title; one or more images (e.g., animage of the cover page of a book); a location (e.g., an address or ageographical location); a website (which may be associated with a URL);contact information (e.g., a phone number or an email address); othersuitable concept information; or any suitable combination of suchinformation. In particular embodiments, a concept node 1804 may beassociated with one or more data objects corresponding to informationassociated with concept node 1804. In particular embodiments, a conceptnode 1804 may correspond to one or more webpages.

In particular embodiments, a node in social graph 1800 may represent orbe represented by a webpage (which may be referred to as a “profilepage”). Profile pages may be hosted by or accessible tosocial-networking system 1760. Profile pages may also be hosted onthird-party websites associated with a third-party system 1770. As anexample and not by way of limitation, a profile page corresponding to aparticular external webpage may be the particular external webpage andthe profile page may correspond to a particular concept node 1804.Profile pages may be viewable by all or a selected subset of otherusers. As an example and not by way of limitation, a user node 1802 mayhave a corresponding user-profile page in which the corresponding usermay add content, make declarations, or otherwise express himself orherself. As another example and not by way of limitation, a concept node1804 may have a corresponding concept-profile page in which one or moreusers may add content, make declarations, or express themselves,particularly in relation to the concept corresponding to concept node1804.

In particular embodiments, a concept node 1804 may represent athird-party webpage or resource hosted by a third-party system 1770. Thethird-party webpage or resource may include, among other elements,content, a selectable or other icon, or other inter-actable object(which may be implemented, for example, in JavaScript, AJAX, or PHPcodes) representing an action or activity. As an example and not by wayof limitation, a third-party webpage may include a selectable icon suchas “like,” “check-in,” “eat,” “recommend,” or another suitable action oractivity. A user viewing the third-party webpage may perform an actionby selecting one of the icons (e.g., “check-in”), causing a clientsystem 1730 to send to social-networking system 1760 a messageindicating the user's action. In response to the message,social-networking system 1760 may create an edge (e.g., a check-in-typeedge) between a user node 1802 corresponding to the user and a conceptnode 1804 corresponding to the third-party webpage or resource and storeedge 1806 in one or more data stores.

In particular embodiments, a pair of nodes in social graph 1800 may beconnected to each other by one or more edges 1806. An edge 1806connecting a pair of nodes may represent a relationship between the pairof nodes. In particular embodiments, an edge 1806 may include orrepresent one or more data objects or attributes corresponding to therelationship between a pair of nodes. As an example and not by way oflimitation, a first user may indicate that a second user is a “friend”of the first user. In response to this indication, social-networkingsystem 1760 may send a “friend request” to the second user. If thesecond user confirms the “friend request,” social-networking system 1760may create an edge 1806 connecting the first user' s user node 1802 tothe second user's user node 1802 in social graph 1800 and store edge1806 as social-graph information in one or more of data stores 1764. Inthe example of FIG. 18, social graph 1800 includes an edge 1806indicating a friend relation between user nodes 1802 of user “A” anduser “B” and an edge indicating a friend relation between user nodes1802 of user “C” and user “B.” Although this disclosure describes orillustrates particular edges 1806 with particular attributes connectingparticular user nodes 1802, this disclosure contemplates any suitableedges 1806 with any suitable attributes connecting user nodes 1802. Asan example and not by way of limitation, an edge 1806 may represent afriendship, family relationship, business or employment relationship,fan relationship (including, e.g., liking, etc.), follower relationship,visitor relationship (including, e.g., accessing, viewing, checking-in,sharing, etc.), subscriber relationship, superior/subordinaterelationship, reciprocal relationship, non-reciprocal relationship,another suitable type of relationship, or two or more suchrelationships. Moreover, although this disclosure generally describesnodes as being connected, this disclosure also describes users orconcepts as being connected. Herein, references to users or conceptsbeing connected may, where appropriate, refer to the nodes correspondingto those users or concepts being connected in social graph 1800 by oneor more edges 1806.

In particular embodiments, an edge 1806 between a user node 1802 and aconcept node 1804 may represent a particular action or activityperformed by a user associated with user node 1802 toward a conceptassociated with a concept node 1804. As an example and not by way oflimitation, as illustrated in FIG. 18, a user may “like,” “attended,”“played,” “listened,” “cooked,” “worked at,” or “watched” a concept,each of which may correspond to an edge type or subtype. Aconcept-profile page corresponding to a concept node 1804 may include,for example, a selectable “check in” icon (such as, for example, aclickable “check in” icon) or a selectable “add to favorites” icon.Similarly, after a user clicks these icons, social-networking system1760 may create a “favorite” edge or a “check in” edge in response to auser's action corresponding to a respective action. As another exampleand not by way of limitation, a user (user “C”) may listen to aparticular song (“SongName”) using a particular application (an onlinemusic application). In this case, social-networking system 1760 maycreate a “listened” edge 1806 and a “used” edge (as illustrated in FIG.18) between user nodes 1802 corresponding to the user and concept nodes1804 corresponding to the song and application to indicate that the userlistened to the song and used the application. Moreover,social-networking system 1760 may create a “played” edge 1806 (asillustrated in FIG. 18) between concept nodes 1804 corresponding to thesong and the application to indicate that the particular song was playedby the particular application. In this case, “played” edge 1806corresponds to an action performed by an external application on anexternal audio file (the song “SongName”). Although this disclosuredescribes particular edges 1806 with particular attributes connectinguser nodes 1802 and concept nodes 1804, this disclosure contemplates anysuitable edges 1806 with any suitable attributes connecting user nodes1802 and concept nodes 1804. Moreover, although this disclosuredescribes edges between a user node 1802 and a concept node 1804representing a single relationship, this disclosure contemplates edgesbetween a user node 1802 and a concept node 1804 representing one ormore relationships. As an example and not by way of limitation, an edge1806 may represent both that a user likes and has used at a particularconcept. Alternatively, another edge 1806 may represent each type ofrelationship (or multiples of a single relationship) between a user node1802 and a concept node 1804 (as illustrated in FIG. 18 between usernode 1802 for user “E” and concept node 1804).

In particular embodiments, social-networking system 1760 may create anedge 1806 between a user node 1802 and a concept node 1804 in socialgraph 1800. As an example and not by way of limitation, a user viewing aconcept-profile page (such as, for example, by using a web browser or aspecial-purpose application hosted by the user's client system 1730) mayindicate that he or she likes the concept represented by the conceptnode 1804 by clicking or selecting a “Like” icon, which may cause theuser's client system 1730 to send to social-networking system 1760 amessage indicating the user's liking of the concept associated with theconcept-profile page. In response to the message, social-networkingsystem 1760 may create an edge 1806 between user node 1802 associatedwith the user and concept node 1804, as illustrated by “like” edge 1806between the user and concept node 1804. In particular embodiments,social-networking system 1760 may store an edge 1806 in one or more datastores. In particular embodiments, an edge 1806 may be automaticallyformed by social-networking system 1760 in response to a particular useraction. As an example and not by way of limitation, if a first useruploads a picture, watches a movie, or listens to a song, an edge 1806may be formed between user node 1802 corresponding to the first user andconcept nodes 1804 corresponding to those concepts. Although thisdisclosure describes forming particular edges 1806 in particularmanners, this disclosure contemplates forming any suitable edges 1806 inany suitable manner.

In particular embodiments, an advertisement may be text (which may beHTML-linked), one or more images (which may be HTML-linked), one or morevideos, audio, other suitable digital object files, a suitablecombination of these, or any other suitable advertisement in anysuitable digital format presented on one or more webpages, in one ormore e-mails, or in connection with search results requested by a user.In addition or as an alternative, an advertisement may be one or moresponsored stories (e.g., a news-feed or ticker item on social-networkingsystem 1760). A sponsored story may be a social action by a user (suchas “liking” a page, “liking” or commenting on a post on a page, RSVPingto an event associated with a page, voting on a question posted on apage, checking in to a place, using an application or playing a game, or“liking” or sharing a website) that an advertiser promotes, for example,by having the social action presented within a pre-determined area of aprofile page of a user or other page, presented with additionalinformation associated with the advertiser, bumped up or otherwisehighlighted within news feeds or tickers of other users, or otherwisepromoted. The advertiser may pay to have the social action promoted. Asan example and not by way of limitation, advertisements may be includedamong the search results of a search-results page, where sponsoredcontent is promoted over non-sponsored content.

In particular embodiments, an advertisement may be requested for displaywithin social-networking-system webpages, third-party webpages, or otherpages. An advertisement may be displayed in a dedicated portion of apage, such as in a banner area at the top of the page, in a column atthe side of the page, in a GUI of the page, in a pop-up window, in adrop-down menu, in an input field of the page, over the top of contentof the page, or elsewhere with respect to the page. In addition or as analternative, an advertisement may be displayed within an application. Anadvertisement may be displayed within dedicated pages, requiring theuser to interact with or watch the advertisement before the user mayaccess a page or utilize an application. The user may, for example viewthe advertisement through a web browser.

A user may interact with an advertisement in any suitable manner. Theuser may click or otherwise select the advertisement. By selecting theadvertisement, the user may be directed to (or a browser or otherapplication being used by the user) a page associated with theadvertisement. At the page associated with the advertisement, the usermay take additional actions, such as purchasing a product or serviceassociated with the advertisement, receiving information associated withthe advertisement, or subscribing to a newsletter associated with theadvertisement. An advertisement with audio or video may be played byselecting a component of the advertisement (like a “play button”).Alternatively, by selecting the advertisement, social-networking system1760 may execute or modify a particular action of the user.

An advertisement may also include social-networking-system functionalitythat a user may interact with. As an example and not by way oflimitation, an advertisement may enable a user to “like” or otherwiseendorse the advertisement by selecting an icon or link associated withendorsement. As another example and not by way of limitation, anadvertisement may enable a user to search (e.g., by executing a query)for content related to the advertiser. Similarly, a user may share theadvertisement with another user (e.g., through social-networking system1760) or RSVP (e.g., through social-networking system 1760) to an eventassociated with the advertisement. In addition or as an alternative, anadvertisement may include social-networking-system content directed tothe user. As an example and not by way of limitation, an advertisementmay display information about a friend of the user withinsocial-networking system 1760 who has taken an action associated withthe subject matter of the advertisement.

In particular embodiments, social-networking system 1760 may determinethe social-graph affinity (which may be referred to herein as“affinity”) of various social-graph entities for each other. Affinitymay represent the strength of a relationship or level of interestbetween particular objects associated with the online social network,such as users, concepts, content, actions, advertisements, other objectsassociated with the online social network, or any suitable combinationthereof. Affinity may also be determined with respect to objectsassociated with third-party systems 1770 or other suitable systems. Anoverall affinity for a social-graph entity for each user, subjectmatter, or type of content may be established. The overall affinity maychange based on continued monitoring of the actions or relationshipsassociated with the social-graph entity. Although this disclosuredescribes determining particular affinities in a particular manner, thisdisclosure contemplates determining any suitable affinities in anysuitable manner.

In particular embodiments, social-networking system 1760 may measure orquantify social-graph affinity using an affinity coefficient (which maybe referred to herein as “coefficient”). The coefficient may representor quantify the strength of a relationship between particular objectsassociated with the online social network. The coefficient may alsorepresent a probability or function that measures a predictedprobability that a user will perform a particular action based on theuser's interest in the action. In this way, a user's future actions maybe predicted based on the user's prior actions, where the coefficientmay be calculated at least in part on the history of the user's actions.Coefficients may be used to predict any number of actions, which may bewithin or outside of the online social network. As an example and not byway of limitation, these actions may include various types ofcommunications, such as sending messages, posting content, or commentingon content; various types of observation actions, such as accessing orviewing profile pages, media, or other suitable content; various typesof coincidence information about two or more social-graph entities, suchas being in the same group, tagged in the same photograph, checked-in atthe same location, or attending the same event; or other suitableactions. Although this disclosure describes measuring affinity in aparticular manner, this disclosure contemplates measuring affinity inany suitable manner.

In particular embodiments, social-networking system 1760 may use avariety of factors to calculate a coefficient. These factors mayinclude, for example, user actions, types of relationships betweenobjects, location information, other suitable factors, or anycombination thereof. In particular embodiments, different factors may beweighted differently when calculating the coefficient. The weights foreach factor may be static or the weights may change according to, forexample, the user, the type of relationship, the type of action, theuser's location, and so forth. Ratings for the factors may be combinedaccording to their weights to determine an overall coefficient for theuser. As an example and not by way of limitation, particular useractions may be assigned both a rating and a weight while a relationshipassociated with the particular user action is assigned a rating and acorrelating weight (e.g., so the weights total 100%). To calculate thecoefficient of a user towards a particular object, the rating assignedto the user's actions may comprise, for example, 60% of the overallcoefficient, while the relationship between the user and the object maycomprise 40% of the overall coefficient. In particular embodiments, thesocial-networking system 1760 may consider a variety of variables whendetermining weights for various factors used to calculate a coefficient,such as, for example, the time since information was accessed, decayfactors, frequency of access, relationship to information orrelationship to the object about which information was accessed,relationship to social-graph entities connected to the object, short- orlong-term averages of user actions, user feedback, other suitablevariables, or any combination thereof. As an example and not by way oflimitation, a coefficient may include a decay factor that causes thestrength of the signal provided by particular actions to decay withtime, such that more recent actions are more relevant when calculatingthe coefficient. The ratings and weights may be continuously updatedbased on continued tracking of the actions upon which the coefficient isbased. Any type of process or algorithm may be employed for assigning,combining, averaging, and so forth the ratings for each factor and theweights assigned to the factors. In particular embodiments,social-networking system 1760 may determine coefficients usingmachine-learning algorithms trained on historical actions and past userresponses, or data farmed from users by exposing them to various optionsand measuring responses. Although this disclosure describes calculatingcoefficients in a particular manner, this disclosure contemplatescalculating coefficients in any suitable manner.

In particular embodiments, social-networking system 1760 may calculate acoefficient based on a user's actions. Social-networking system 1760 maymonitor such actions on the online social network, on a third-partysystem 1770, on other suitable systems, or any combination thereof. Anysuitable type of user actions may be tracked or monitored. Typical useractions include viewing profile pages, creating or posting content,interacting with content, tagging or being tagged in images, joininggroups, listing and confirming attendance at events, checking-in atlocations, liking particular pages, creating pages, and performing othertasks that facilitate social action. In particular embodiments,social-networking system 1760 may calculate a coefficient based on theuser's actions with particular types of content. The content may beassociated with the online social network, a third-party system 1770, oranother suitable system. The content may include users, profile pages,posts, news stories, headlines, instant messages, chat roomconversations, emails, advertisements, pictures, video, music, othersuitable objects, or any combination thereof. Social-networking system1760 may analyze a user's actions to determine whether one or more ofthe actions indicate an affinity for subject matter, content, otherusers, and so forth. As an example and not by way of limitation, if auser frequently posts content related to “coffee” or variants thereof,social-networking system 1760 may determine the user has a highcoefficient with respect to the concept “coffee”. Particular actions ortypes of actions may be assigned a higher weight and/or rating thanother actions, which may affect the overall calculated coefficient. Asan example and not by way of limitation, if a first user emails a seconduser, the weight or the rating for the action may be higher than if thefirst user simply views the user-profile page for the second user.

In particular embodiments, social-networking system 1760 may calculate acoefficient based on the type of relationship between particularobjects. Referencing the social graph 1800, social-networking system1760 may analyze the number and/or type of edges 1806 connectingparticular user nodes 1802 and concept nodes 1804 when calculating acoefficient. As an example and not by way of limitation, user nodes 1802that are connected by a spouse-type edge (representing that the twousers are married) may be assigned a higher coefficient than a usernodes 1802 that are connected by a friend-type edge. In other words,depending upon the weights assigned to the actions and relationships forthe particular user, the overall affinity may be determined to be higherfor content about the user's spouse than for content about the user'sfriend. In particular embodiments, the relationships a user has withanother object may affect the weights and/or the ratings of the user'sactions with respect to calculating the coefficient for that object. Asan example and not by way of limitation, if a user is tagged in a firstphoto, but merely likes a second photo, social-networking system 1760may determine that the user has a higher coefficient with respect to thefirst photo than the second photo because having a tagged-in-typerelationship with content may be assigned a higher weight and/or ratingthan having a like-type relationship with content. In particularembodiments, social-networking system 1760 may calculate a coefficientfor a first user based on the relationship one or more second users havewith a particular object. In other words, the connections andcoefficients other users have with an object may affect the first user'scoefficient for the object. As an example and not by way of limitation,if a first user is connected to or has a high coefficient for one ormore second users, and those second users are connected to or have ahigh coefficient for a particular object, social-networking system 1760may determine that the first user should also have a relatively highcoefficient for the particular object. In particular embodiments, thecoefficient may be based on the degree of separation between particularobjects. The lower coefficient may represent the decreasing likelihoodthat the first user will share an interest in content objects of theuser that is indirectly connected to the first user in the social graph1800. As an example and not by way of limitation, social-graph entitiesthat are closer in the social graph 1800 (i.e., fewer degrees ofseparation) may have a higher coefficient than entities that are furtherapart in the social graph 1800.

In particular embodiments, social-networking system 1760 may calculate acoefficient based on location information. Objects that aregeographically closer to each other may be considered to be more relatedor of more interest to each other than more distant objects. Inparticular embodiments, the coefficient of a user towards a particularobject may be based on the proximity of the object's location to acurrent location associated with the user (or the location of a clientsystem 1730 of the user). A first user may be more interested in otherusers or concepts that are closer to the first user. As an example andnot by way of limitation, if a user is one mile from an airport and twomiles from a gas station, social-networking system 1760 may determinethat the user has a higher coefficient for the airport than the gasstation based on the proximity of the airport to the user.

In particular embodiments, social-networking system 1760 may performparticular actions with respect to a user based on coefficientinformation. Coefficients may be used to predict whether a user willperform a particular action based on the user's interest in the action.A coefficient may be used when generating or presenting any type ofobjects to a user, such as advertisements, search results, news stories,media, messages, notifications, or other suitable objects. Thecoefficient may also be utilized to rank and order such objects, asappropriate. In this way, social-networking system 1760 may provideinformation that is relevant to user's interests and currentcircumstances, increasing the likelihood that they will find suchinformation of interest. In particular embodiments, social-networkingsystem 1760 may generate content based on coefficient information.Content objects may be provided or selected based on coefficientsspecific to a user. As an example and not by way of limitation, thecoefficient may be used to generate media for the user, where the usermay be presented with media for which the user has a high overallcoefficient with respect to the media object. As another example and notby way of limitation, the coefficient may be used to generateadvertisements for the user, where the user may be presented withadvertisements for which the user has a high overall coefficient withrespect to the advertised object. In particular embodiments,social-networking system 1760 may generate search results based oncoefficient information. Search results for a particular user may bescored or ranked based on the coefficient associated with the searchresults with respect to the querying user. As an example and not by wayof limitation, search results corresponding to objects with highercoefficients may be ranked higher on a search-results page than resultscorresponding to objects having lower coefficients.

In particular embodiments, social-networking system 1760 may calculate acoefficient in response to a request for a coefficient from a particularsystem or process. To predict the likely actions a user may take (or maybe the subject of) in a given situation, any process may request acalculated coefficient for a user. The request may also include a set ofweights to use for various factors used to calculate the coefficient.This request may come from a process running on the online socialnetwork, from a third-party system 1770 (e.g., via an API or othercommunication channel), or from another suitable system. In response tothe request, social-networking system 1760 may calculate the coefficient(or access the coefficient information if it has previously beencalculated and stored). In particular embodiments, social-networkingsystem 1760 may measure an affinity with respect to a particularprocess. Different processes (both internal and external to the onlinesocial network) may request a coefficient for a particular object or setof objects. Social-networking system 1760 may provide a measure ofaffinity that is relevant to the particular process that requested themeasure of affinity. In this way, each process receives a measure ofaffinity that is tailored for the different context in which the processwill use the measure of affinity.

In connection with social-graph affinity and affinity coefficients,particular embodiments may utilize one or more systems, components,elements, functions, methods, operations, or steps disclosed in U.S.patent application Ser. No. 11/503,093, filed 11 Aug. 2006, U.S. patentapplication Ser. No. 12/977,027, filed 22 Dec. 2010, U.S. patentapplication Ser. No. 12/978,265, filed 23 Dec. 2010, and U.S. patentapplication Ser. No. 13/632,869, filed 1 Oct. 2012, each of which isincorporated by reference.

In particular embodiments, one or more of the content objects of theonline social network may be associated with a privacy setting. Theprivacy settings (or “access settings”) for an object may be stored inany suitable manner, such as, for example, in association with theobject, in an index on an authorization server, in another suitablemanner, or any combination thereof. A privacy setting of an object mayspecify how the object (or particular information associated with anobject) can be accessed (e.g., viewed or shared) using the online socialnetwork. Where the privacy settings for an object allow a particularuser to access that object, the object may be described as being“visible” with respect to that user. As an example and not by way oflimitation, a user of the online social network may specify privacysettings for a user-profile page that identify a set of users that mayaccess the work experience information on the user-profile page, thusexcluding other users from accessing the information. In particularembodiments, the privacy settings may specify a “blocked list” of usersthat should not be allowed to access certain information associated withthe object. In other words, the blocked list may specify one or moreusers or entities for which an object is not visible. As an example andnot by way of limitation, a user may specify a set of users that may notaccess photos albums associated with the user, thus excluding thoseusers from accessing the photo albums (while also possibly allowingcertain users not within the set of users to access the photo albums).In particular embodiments, privacy settings may be associated withparticular social-graph elements. Privacy settings of a social-graphelement, such as a node or an edge, may specify how the social-graphelement, information associated with the social-graph element, orcontent objects associated with the social-graph element can be accessedusing the online social network. As an example and not by way oflimitation, a particular concept node 1804 corresponding to a particularphoto may have a privacy setting specifying that the photo may only beaccessed by users tagged in the photo and their friends. In particularembodiments, privacy settings may allow users to opt in or opt out ofhaving their actions logged by social-networking system 1760 or sharedwith other systems (e.g., third-party system 1770). In particularembodiments, the privacy settings associated with an object may specifyany suitable granularity of permitted access or denial of access. As anexample and not by way of limitation, access or denial of access may bespecified for particular users (e.g., only me, my roommates, and myboss), users within a particular degrees-of-separation (e.g., friends,or friends-of-friends), user groups (e.g., the gaming club, my family),user networks (e.g., employees of particular employers, students oralumni of particular university), all users (“public”), no users(“private”), users of third-party systems 1770, particular applications(e.g., third-party applications, external websites), other suitableusers or entities, or any combination thereof. Although this disclosuredescribes using particular privacy settings in a particular manner, thisdisclosure contemplates using any suitable privacy settings in anysuitable manner.

In particular embodiments, one or more servers 1762 may beauthorization/privacy servers for enforcing privacy settings. Inresponse to a request from a user (or other entity) for a particularobject stored in a data store 1764, social-networking system 1760 maysend a request to the data store 1764 for the object. The request mayidentify the user associated with the request and may only be sent tothe user (or a client system 1730 of the user) if the authorizationserver determines that the user is authorized to access the object basedon the privacy settings associated with the object. If the requestinguser is not authorized to access the object, the authorization servermay prevent the requested object from being retrieved from the datastore 1764, or may prevent the requested object from being sent to theuser. In the search query context, an object may only be generated as asearch result if the querying user is authorized to access the object.In other words, the object must have a visibility that is visible to thequerying user. If the object has a visibility that is not visible to theuser, the object may be excluded from the search results. Although thisdisclosure describes enforcing privacy settings in a particular manner,this disclosure contemplates enforcing privacy settings in any suitablemanner.

FIG. 19 illustrates an example computer system 1900. In particularembodiments, one or more computer systems 1900 perform one or more stepsof one or more methods described or illustrated herein. In particularembodiments, one or more computer systems 1900 provide functionalitydescribed or illustrated herein. In particular embodiments, softwarerunning on one or more computer systems 1900 performs one or more stepsof one or more methods described or illustrated herein or providesfunctionality described or illustrated herein. Particular embodimentsinclude one or more portions of one or more computer systems 1900.Herein, reference to a computer system may encompass a computing device,and vice versa, where appropriate. Moreover, reference to a computersystem may encompass one or more computer systems, where appropriate.

This disclosure contemplates any suitable number of computer systems1900. This disclosure contemplates computer system 1900 taking anysuitable physical form. As example and not by way of limitation,computer system 1900 may be an embedded computer system, asystem-on-chip (SOC), a single-board computer system (SBC) (such as, forexample, a computer-on-module (COM) or system-on-module (SOM)), adesktop computer system, a laptop or notebook computer system, aninteractive kiosk, a mainframe, a mesh of computer systems, a mobiletelephone, a personal digital assistant (PDA), a server, a tabletcomputer system, an augmented/virtual reality device, or a combinationof two or more of these. Where appropriate, computer system 1900 mayinclude one or more computer systems 1900; be unitary or distributed;span multiple locations; span multiple machines; span multiple datacenters; or reside in a cloud, which may include one or more cloudcomponents in one or more networks. Where appropriate, one or morecomputer systems 1900 may perform without substantial spatial ortemporal limitation one or more steps of one or more methods describedor illustrated herein. As an example and not by way of limitation, oneor more computer systems 1900 may perform in real time or in batch modeone or more steps of one or more methods described or illustratedherein. One or more computer systems 1900 may perform at different timesor at different locations one or more steps of one or more methodsdescribed or illustrated herein, where appropriate.

In particular embodiments, computer system 1900 includes a processor1902, memory 1904, storage 1906, an input/output (I/O) interface 1908, acommunication interface 1910, and a bus 1912. Although this disclosuredescribes and illustrates a particular computer system having aparticular number of particular components in a particular arrangement,this disclosure contemplates any suitable computer system having anysuitable number of any suitable components in any suitable arrangement.

In particular embodiments, processor 1902 includes hardware forexecuting instructions, such as those making up a computer program. Asan example and not by way of limitation, to execute instructions,processor 1902 may retrieve (or fetch) the instructions from an internalregister, an internal cache, memory 1904, or storage 1906; decode andexecute them; and then write one or more results to an internalregister, an internal cache, memory 1904, or storage 1906. In particularembodiments, processor 1902 may include one or more internal caches fordata, instructions, or addresses. This disclosure contemplates processor1902 including any suitable number of any suitable internal caches,where appropriate. As an example and not by way of limitation, processor1902 may include one or more instruction caches, one or more datacaches, and one or more translation lookaside buffers (TLBs).Instructions in the instruction caches may be copies of instructions inmemory 1904 or storage 1906, and the instruction caches may speed upretrieval of those instructions by processor 1902. Data in the datacaches may be copies of data in memory 1904 or storage 1906 forinstructions executing at processor 1902 to operate on; the results ofprevious instructions executed at processor 1902 for access bysubsequent instructions executing at processor 1902 or for writing tomemory 1904 or storage 1906; or other suitable data. The data caches mayspeed up read or write operations by processor 1902. The TLBs may speedup virtual-address translation for processor 1902. In particularembodiments, processor 1902 may include one or more internal registersfor data, instructions, or addresses. This disclosure contemplatesprocessor 1902 including any suitable number of any suitable internalregisters, where appropriate. Where appropriate, processor 1902 mayinclude one or more arithmetic logic units (ALUs); be a multi-coreprocessor; or include one or more processors 1902. Although thisdisclosure describes and illustrates a particular processor, thisdisclosure contemplates any suitable processor.

In particular embodiments, memory 1904 includes main memory for storinginstructions for processor 1902 to execute or data for processor 1902 tooperate on. As an example and not by way of limitation, computer system1900 may load instructions from storage 1906 or another source (such as,for example, another computer system 1900) to memory 1904. Processor1902 may then load the instructions from memory 1904 to an internalregister or internal cache. To execute the instructions, processor 1902may retrieve the instructions from the internal register or internalcache and decode them. During or after execution of the instructions,processor 1902 may write one or more results (which may be intermediateor final results) to the internal register or internal cache. Processor1902 may then write one or more of those results to memory 1904. Inparticular embodiments, processor 1902 executes only instructions in oneor more internal registers or internal caches or in memory 1904 (asopposed to storage 1906 or elsewhere) and operates only on data in oneor more internal registers or internal caches or in memory 1904 (asopposed to storage 1906 or elsewhere). One or more memory buses (whichmay each include an address bus and a data bus) may couple processor1902 to memory 1904. Bus 1912 may include one or more memory buses, asdescribed below. In particular embodiments, one or more memorymanagement units (MMUs) reside between processor 1902 and memory 1904and facilitate accesses to memory 1904 requested by processor 1902. Inparticular embodiments, memory 1904 includes random access memory (RAM).This RAM may be volatile memory, where appropriate. Where appropriate,this RAM may be dynamic RAM (DRAM) or static RAM (SRAM). Moreover, whereappropriate, this RAM may be single-ported or multi-ported RAM. Thisdisclosure contemplates any suitable RAM. Memory 1904 may include one ormore memories 1904, where appropriate. Although this disclosuredescribes and illustrates particular memory, this disclosurecontemplates any suitable memory.

In particular embodiments, storage 1906 includes mass storage for dataor instructions. As an example and not by way of limitation, storage1906 may include a hard disk drive (HDD), a floppy disk drive, flashmemory, an optical disc, a magneto-optical disc, magnetic tape, or aUniversal Serial Bus (USB) drive or a combination of two or more ofthese. Storage 1906 may include removable or non-removable (or fixed)media, where appropriate. Storage 1906 may be internal or external tocomputer system 1900, where appropriate. In particular embodiments,storage 1906 is non-volatile, solid-state memory. In particularembodiments, storage 1906 includes read-only memory (ROM). Whereappropriate, this ROM may be mask-programmed ROM, programmable ROM(PROM), erasable PROM (EPROM), electrically erasable PROM (EEPROM),electrically alterable ROM (EAROM), or flash memory or a combination oftwo or more of these. This disclosure contemplates mass storage 1906taking any suitable physical form. Storage 1906 may include one or morestorage control units facilitating communication between processor 1902and storage 1906, where appropriate. Where appropriate, storage 1906 mayinclude one or more storages 1906. Although this disclosure describesand illustrates particular storage, this disclosure contemplates anysuitable storage.

In particular embodiments, I/O interface 1908 includes hardware,software, or both, providing one or more interfaces for communicationbetween computer system 1900 and one or more I/O devices. Computersystem 1900 may include one or more of these I/O devices, whereappropriate. One or more of these I/O devices may enable communicationbetween a person and computer system 1900. As an example and not by wayof limitation, an I/O device may include a keyboard, keypad, microphone,monitor, mouse, printer, scanner, speaker, still camera, stylus, tablet,touch screen, trackball, video camera, another suitable I/O device or acombination of two or more of these. An I/O device may include one ormore sensors. This disclosure contemplates any suitable I/O devices andany suitable I/O interfaces 1908 for them. Where appropriate, I/Ointerface 1908 may include one or more device or software driversenabling processor 1902 to drive one or more of these I/O devices. I/Ointerface 1908 may include one or more I/O interfaces 1908, whereappropriate. Although this disclosure describes and illustrates aparticular I/O interface, this disclosure contemplates any suitable I/Ointerface.

In particular embodiments, communication interface 1910 includeshardware, software, or both providing one or more interfaces forcommunication (such as, for example, packet-based communication) betweencomputer system 1900 and one or more other computer systems 1900 or oneor more networks. As an example and not by way of limitation,communication interface 1910 may include a network interface controller(NIC) or network adapter for communicating with an Ethernet or otherwire-based network or a wireless NIC (WNIC) or wireless adapter forcommunicating with a wireless network, such as a WI-FI network. Thisdisclosure contemplates any suitable network and any suitablecommunication interface 1910 for it. As an example and not by way oflimitation, computer system 1900 may communicate with an ad hoc network,a personal area network (PAN), a local area network (LAN), a wide areanetwork (WAN), a metropolitan area network (MAN), or one or moreportions of the Internet or a combination of two or more of these. Oneor more portions of one or more of these networks may be wired orwireless. As an example, computer system 1900 may communicate with awireless PAN (WPAN) (such as, for example, a BLUETOOTH WPAN), a WI-FInetwork, a WI-MAX network, a cellular telephone network (such as, forexample, a Global System for Mobile Communications (GSM) network), orother suitable wireless network or a combination of two or more ofthese. Computer system 1900 may include any suitable communicationinterface 1910 for any of these networks, where appropriate.Communication interface 1910 may include one or more communicationinterfaces 1910, where appropriate. Although this disclosure describesand illustrates a particular communication interface, this disclosurecontemplates any suitable communication interface.

In particular embodiments, bus 1912 includes hardware, software, or bothcoupling components of computer system 1900 to each other. As an exampleand not by way of limitation, bus 1912 may include an AcceleratedGraphics Port (AGP) or other graphics bus, an Enhanced Industry StandardArchitecture (EISA) bus, a front-side bus (FSB), a HYPERTRANSPORT (HT)interconnect, an Industry Standard Architecture (ISA) bus, an INFINIBANDinterconnect, a low-pin-count (LPC) bus, a memory bus, a Micro ChannelArchitecture (MCA) bus, a Peripheral Component Interconnect (PCI) bus, aPCI-Express (PCIe) bus, a serial advanced technology attachment (SATA)bus, a Video Electronics Standards Association local (VLB) bus, oranother suitable bus or a combination of two or more of these. Bus 1912may include one or more buses 1912, where appropriate. Although thisdisclosure describes and illustrates a particular bus, this disclosurecontemplates any suitable bus or interconnect.

Herein, a computer-readable non-transitory storage medium or media mayinclude one or more semiconductor-based or other integrated circuits(ICs) (such, as for example, field-programmable gate arrays (FPGAs) orapplication-specific ICs (ASICs)), hard disk drives (HDDs), hybrid harddrives (HHDs), optical discs, optical disc drives (ODDs),magneto-optical discs, magneto-optical drives, floppy diskettes, floppydisk drives (FDDs), magnetic tapes, solid-state drives (SSDs),RAM-drives, SECURE DIGITAL cards or drives, any other suitablecomputer-readable non-transitory storage media, or any suitablecombination of two or more of these, where appropriate. Acomputer-readable non-transitory storage medium may be volatile,non-volatile, or a combination of volatile and non-volatile, whereappropriate.

Herein, “or” is inclusive and not exclusive, unless expressly indicatedotherwise or indicated otherwise by context. Therefore, herein, “A or B”means “A, B, or both,” unless expressly indicated otherwise or indicatedotherwise by context. Moreover, “and” is both joint and several, unlessexpressly indicated otherwise or indicated otherwise by context.Therefore, herein, “A and B” means “A and B, jointly or severally,”unless expressly indicated otherwise or indicated otherwise by context.

The scope of this disclosure encompasses all changes, substitutions,variations, alterations, and modifications to the example embodimentsdescribed or illustrated herein that a person having ordinary skill inthe art would comprehend. The scope of this disclosure is not limited tothe example embodiments described or illustrated herein. Moreover,although this disclosure describes and illustrates respectiveembodiments herein as including particular components, elements,feature, functions, operations, or steps, any of these embodiments mayinclude any combination or permutation of any of the components,elements, features, functions, operations, or steps described orillustrated anywhere herein that a person having ordinary skill in theart would comprehend. Furthermore, reference in the appended claims toan apparatus or system or a component of an apparatus or system beingadapted to, arranged to, capable of, configured to, enabled to, operableto, or operative to perform a particular function encompasses thatapparatus, system, component, whether or not it or that particularfunction is activated, turned on, or unlocked, as long as thatapparatus, system, or component is so adapted, arranged, capable,configured, enabled, operable, or operative. Additionally, although thisdisclosure describes or illustrates particular embodiments as providingparticular advantages, particular embodiments may provide none, some, orall of these advantages.

What is claimed is:
 1. A method comprising, by a computing system:sending, to a client system associated with a first user via anapplication associated with the computing system, instructions forpresenting one or more recommended vendors, wherein the one or morerecommended vendors are selected based on location data and user dataassociated with the first user; receiving, from the client system viathe application, a user selection of a recommended vendor from the oneor more recommended vendors; sending, to the client system via theapplication, instructions for presenting an ordering interfacecomprising one or more catalog items and one or more delivery options;receiving, from the client system via the application, a user selectionof one or more of the catalog items and one of the delivery options; andsending, to a third-party system associated with the user selectedvendor, an order based on the user selected catalog items and deliveryoption.
 2. The method of claim 1, wherein the user preference vectorcorresponds to one or more stated user preferences of the first user andone or more inferred user preferences of the first user.
 3. The methodof claim 2, further comprising: determining one or more stated userpreferences of the first user and one or more inferred user preferencesof the first user based on analysis of activity of the first user on anonline social network.
 4. The method of claim 2, wherein one of the oneor more inferred user preferences comprise a food preference, an orderpreference, or a vendor preference.
 5. The method of claim 1, whereinproviding the first reference of the plurality of references comprisesgenerating a recommendation regarding the first reference for the firstuser.
 6. The method of claim 1, further comprising: receivinginformation regarding a completed order of the first user that comprisesorder parameters associated with the completed order and venderparameters associated with the completed order; determining feedback ofthe first user regarding the completed order based on the informationregarding the completed order; and updating the user preference vectorfor the first user based on the order parameters associated with thecompleted order, the vender parameters associated with the completedorder, and the feedback of the first user regarding the completed order.7. The method of claim 1, wherein the providing the first reference ofthe plurality of references is further based on a calculation of anaffinity coefficient between the first user and the first reference. 8.The method of claim 7, further comprising: calculating the affinitycoefficient by determining a weighted combination of a plurality offactors, at least one factor corresponding to an interaction of thefirst user on an online social network with the catalog item associatedwith the first reference or the vendor associated with the firstreference.
 9. The method of claim 7, further comprising: calculating theaffinity coefficient based on accessing a social graph on an onlinesocial network, the social graph comprising a plurality of nodes and aplurality of edges connecting the nodes, each edge representing arelationship between two nodes, wherein a first node of the plurality ofnodes corresponds to the first user, wherein one or more second nodes ofthe plurality of nodes correspond to the catalog item associated withthe first reference, the vendor offering the catalog item associatedwith the first reference, or a food concept node.
 10. The method ofclaim 1, further comprising: calculating a score for each reference ofthe plurality of references based at least in part on the one or moreorder parameters and the one or more metadata items; and wherein thefirst reference is provided based on the score calculated for the firstreference.
 11. The method of claim 1, further comprising: accessing, foreach reference of the plurality of references, a catalog-item vectorconstructed based on the one or more metadata items corresponding to thereference provided by the vendor of the catalog item corresponding tothe reference; calculating a score for each reference of the pluralityof references based at least in part on a difference between the userpreference vector and the catalog-item vector; and wherein the firstreference is provided based on the score calculated for the firstreference.
 12. The method of claim 1, wherein each vendor corresponds toa vendor node in a social graph maintained by an online social network,the social graph further comprising a plurality of user nodescorresponding to one or more users of the online social network, thesocial graph further comprising a plurality of edges connecting nodes,each edge representing a relationship between two nodes, the methodfurther comprising: calculating a score for each reference of theplurality of references based on a number of edge connections betweenthe vendor node corresponding to the vendor associated with thereference and one or more user nodes, wherein a higher number of edgeconnections corresponds to an increased score.
 13. The method of claim1, wherein the order parameters comprise a location of the clientsystem, the method further comprising: providing, to the client systemof the first user, a recommendation to place an order with a firstvendor of the one or more vendors through an application executing onthe client system based on comparison of the location of the clientsystem to a location of the first vendor.
 14. The method of claim 1,wherein the one or more metadata items for each reference comprise adelivery time associated with the vendor offering the catalog itemassociated with the reference.
 15. The method of claim 1, wherein theone or more metadata items for each reference comprise a user ratingassociated with the vendor offering the catalog item associated with thereference.
 16. One or more computer-readable non-transitory storagemedia embodying software that is operable when executed to: access oneor more order parameters associated with a first user, the orderparameters comprising one or more user-specified parameters; determine auser preference vector for the first user; access a plurality ofreferences to catalog items offered by one or more vendors, wherein eachreference is associated with one or more metadata items provided by therespective vendor; and provide, to a client system of the first user, afirst reference of the plurality of references based on at least acomparison of the one or more order parameters, the user preferencevector, and the one or more metadata items corresponding to the firstreference.
 17. The computer-readable non-transitory storage media ofclaim 16, wherein the user preference vector corresponds to one or morestated user preferences of the first user and one or more inferred userpreferences of the first user.
 18. The computer-readable non-transitorystorage media of claim 17, wherein the software is further operable whenexecuted to: determine one or more stated user preferences of the firstuser and one or more inferred user preferences of the first user basedon analysis of activity of the first user on an online social network.19. A system comprising: one or more processors; and a non-transitorymemory coupled to the processors comprising instructions executable bythe processors, the processors operable when executing the instructionsto: access one or more order parameters associated with a first user,the order parameters comprising one or more user-specified parameters;determine a user preference vector for the first user; access aplurality of references to catalog items offered by one or more vendors,wherein each reference is associated with one or more metadata itemsprovided by the respective vendor; and provide, to a client system ofthe first user, a first reference of the plurality of references basedon at least a comparison of the one or more order parameters, the userpreference vector, and the one or more metadata items corresponding tothe first reference.
 20. The system of claim 19, wherein the userpreference vector corresponds to one or more stated user preferences ofthe first user and one or more inferred user preferences of the firstuser.